2015-09-18 21 views
2

我創建十月CMS與十月CMS,如何從一個插件重定向到具有數據的頁

{{ form_open({ request: 'onSubmitForm' }) }} 

插件具有前端形式(組件)在插件有一個函數onSubmitForm()validator。 如果驗證器失敗,我想重定向到頁面輸入表格($this->page->url),但發送驗證器消息($validator->messages())和表格的原始輸入(post())。

我已經試過:

if ($validator->fails()) { 
    return Redirect::to($this->page->url)->withErrors($validator->messages())->withInput(post()); 
} 

,如果我把{{ errors }}的頁面我得到一個消息

Object類照亮的\ Support \ ViewErrorBag上無法轉換 串

然後我通過使用固定:

{% for error in errors.all() %} 
    <li>{{ error }}</li> 
{% endfor %} 

{{ errors.first('name') }}

{{ input }}甚至不返回錯誤。

我在做重定向錯誤嗎?還是它與Twig和Blade如此完全不同?有沒有辦法預先填充舊的輸入值和錯誤消息?

回答

0

這是我的刀片

@if (count($errors) > 0) 
      <div class="alert alert-danger"> 
       <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> 
       <strong>{{trans('messages.sorry')}}</strong> 
       <br><br> 
       <ul> 
         @foreach ($errors->all() as $error) 
          <li>{{ $error }}</li> 
         @endforeach 
       </ul> 
      </div> 
@endif 
+0

是的,這不能在Twig中工作......我討厭十月份的CMS如何不將Blade和Twig作爲他們選擇的模板引擎。 – xaddict

2

常規代碼可以輸出與此樹枝

{{form_value('my_input_name')}} 

october cms form doc

舊的輸入值,你可以在很頂部,你可以閱讀通過將「方法名稱」更改爲小寫字母和「::」來將「php」例子翻譯爲「_」,以便_

例:

// PHP 
<?= Form::open(..) ?> 

// Twig 
{{ form_open(...) }} 

希望它能幫上忙。

0

而不是重定向到表單提交的同一頁面,只需使用Ajax!你可以用兩種方法做。

而不是form_open,使用form_ajax。 下面是一個例子:

form_ajax('onSubmitForm', { model: user, class: 'whateverclass', id: 'idoftheform', success:'doSomethingInJS(textStatus, data)'}) 

在PHP中,你可以回到你的錯誤消息

return ["ErrorMsg" => 'this is some error'] 

然後在JS可以顯示它:

function whateverClass (textStatus, data){ 
alert (data.ErrorMsg); 
$('#alertHolderDiv').html(data.ErrorMsg); 
} 

另一種方法是使用部分!一旦你拋出一個錯誤,你可以使用ajax命令中的「update」來更新部分。該部分將被新消息覆蓋。

相關問題