Php 在10月的CMS中,如何从插件重定向到包含数据的页面
我正在为十月CMS创建一个插件,它的前端表单(组件)带有 在插件中有一个函数Php 在10月的CMS中,如何从插件重定向到包含数据的页面,php,laravel,octobercms,Php,Laravel,Octobercms,我正在为十月CMS创建一个插件,它的前端表单(组件)带有 在插件中有一个函数onSubmitForm(),带有一个验证器。 如果验证程序失败,我想重定向到表单输入来自的页面($this->page->url),但发送验证程序消息($validator->messages())和表单的原始输入(post()) 我试过: if ($validator->fails()) { return Redirect::to($this->page->url)->withErrors
onSubmitForm()
,带有一个验证器
。
如果验证程序失败,我想重定向到表单输入来自的页面($this->page->url
),但发送验证程序消息($validator->messages()
)和表单的原始输入(post()
)
我试过:
if ($validator->fails()) {
return Redirect::to($this->page->url)->withErrors($validator->messages())->withInput(post());
}
如果我把{{errors}}
放在页面上,我会收到一条消息
无法转换Illumb\Support\ViewErrorBag类的对象
串
然后,我使用以下方法对其进行修复:
{% for error in errors.all() %}
<li>{{ error }}</li>
{% endfor %}
{%for errors.all()中的错误%}
{{error}}
{%endfor%}
和{{errors.first('name')}
但是{{input}}
甚至不返回错误
我是否做了错误的重定向?或者,这与树枝和刀片是如何完全不同有关?有没有办法预先填充旧的输入值和错误消息?这是我为blade编写的常规代码
@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
@if(计数($errors)>0)
×
{{trans('messages.sorry')}}
@foreach($errors->all()作为$error)
- {{$error}}
@endforeach
@恩迪夫
您可以使用此细枝输出旧的输入值
{{form_value('my_input_name')}}
正如您可以在最上面看到的,您可以通过将“方法名称”更改为小写和:“to”将php示例“翻译”为twig_
例如:
// PHP
<?= Form::open(..) ?>
// Twig
{{ form_open(...) }}
//PHP
//小枝
{{form_open(…)}
希望它能有所帮助。不要重定向到表单提交的同一页面,只需使用Ajax!你可以用两种方法 使用form_ajax代替form_open。 以下是一个例子:
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”来更新部分内容。部分内容将被新消息覆盖。是的,这在Twig中不起作用。。。我讨厌10月CMS没有将刀片,而是细枝作为他们选择的模板引擎。
function whateverClass (textStatus, data){
alert (data.ErrorMsg);
$('#alertHolderDiv').html(data.ErrorMsg);
}