我正在使用laravel 4,我有一个页面,其中包含我编辑商店的表单。我将此数据发送到控制器并验证字段。如果出现问题,我会返回编辑页面,我正在尝试发送消息和对象。但有些东西不起作用,因为我无法获得信息。我只得到了这个对象。
这是我返回视图的方式:
if($validator->fails()) {
return View::make('admin.editstore')->with('fail', 'Wrong input!!!')->with('store', $store);
}
这就是我收到消息的方式:
@if(Session::has('success'))
<div class="alert alert-success"> {{ Session::get('success') }} </div>
@elseif (Session::has('fail'))
<div class="alert alert-danger"> {{ Session::get('fail') }} </div>
@endif
如果出现问题,我可以访问编辑页面中的对象。但是我无法访问该消息。有谁知道这是什么问题?我没有想法......
PS:在页面上获取消息的部分应该没问题,因为我在其他页面上使用它并且它正在工作。我认为问题在于使用多个数据返回视图,但我不确定如何执行此操作..
答案 0 :(得分:3)
只需使用compact并以这种方式传递变量。然后,您可以通过$fail
和$store
if($validator->fails()) {
$fail = 'Wrong input!!!';
return View::make('admin.editstore', compact('fail', 'store'));
}
答案 1 :(得分:1)
您可以执行以下操作:
$data = array(
'fail' => 'Wrong input!!!',
'store' => $store
);
return View::make('admin.editstore')->with($data);
答案 2 :(得分:1)
多次调用->with()
传递多个参数是可以的。那里没有问题。
但是,您的视图似乎不会尝试访问传递给它的$fail
参数。您的视图正在查找会话中的失败消息。您需要更改视图以查看传递给它的$fail
参数,或者您需要更改控制器以将$fail
数据放入Session而不是将其传递给视图。
此外,我不确定您是否只想创建编辑视图,或者您确实想要重定向回编辑视图。如果您使用的是资源丰富的路由/控制器,您往往会遇到类似的情况(仅显示编辑/更新操作):
class StoreController extends BaseController
{
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$store = Store::find($id);
return View::make('admin.editstore')->with('store', $store);
}
/**
* Update the specified resource in storage.
*/
public function update($id)
{
$rules = Store::$rules; // or wherever your rules are
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
// flash your fail message and redirect back to the edit form
// with the input and the validator error messages
Session::flash('fail', 'Invalid!');
return Redirect::action('StoreController@edit', array($id))
->withInput()
->withErrors($validator->messages());
} else {
// flash your success message and redirect to wherever you'd
// like to go on success
Session::flash('success', 'Valid!');
return Redirect::action('StoreController@index');
}
}
}