3

フロントエンドフォーム(コンポーネント)を持つOctober 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 }}ページに置くと、メッセージが表示されます

クラス Illuminate\Support\ViewErrorBag のオブジェクトを文字列に変換できませんでした

次に、次を使用して修正しました:

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

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

しかし、{{ input }}エラーは返されません。

リダイレクトを間違っていますか?それとも、Twig と Blade がまったく違うことに関係しているのでしょうか? 古い入力値とエラー メッセージを事前に入力する方法はありますか?

4

3 に答える 3

4

この小枝で古い入力値を出力できます

{{form_value('my_input_name')}}

10 月の CMS フォーム ドキュメント

一番上にあるように、「メソッド名」を小文字に、「::」を _ に変更することで、php の例を twig に「変換」できます。

例:

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

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

それが役立つことを願っています。

于 2015-11-18T10:54:57.230 に答える
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」を使用してパーシャルを更新できます。パーシャルは新しいメッセージで上書きされます。

于 2015-12-23T23:33:21.963 に答える