Laravel:将用户重定向到另一个包含消息的页面

时间:2014-06-24 14:49:45

标签: php laravel

以下是添加新用户的Controller代码的摘录:

public function store()
{
    $input = Input::all();

    if (! $this->user->isValid($input))
    {
        return Redirect::back()->withInput()->withErrors($this->user->errors);
    }

    ...
}

这里是添加新用户表单的Controller代码:

public function create()
{
    return View::make('users.create');
}

请注意,我不需要向视图发送输入和错误,但我可以在那里访问它而没有任何问题。

但请看一些其他代码:

这是我删除用户的控制器代码:

public function destroy($id)
{
    $user = User::find($id);

    $deleted_message = 'User "' . $user->first_name . ' ' . $user->last_name . '" has been deleted.';

    User::destroy($id);

    return Redirect::route('users.index')->withMessage($deleted_message);
}

这是我的控制器代码,用于显示所有用户:

public function index()
{
    $users = User::all();
    return View::make('users.index')->withUsers($users);
}

为什么我没有在视图中显示$message以显示所有用户?

2 个答案:

答案 0 :(得分:0)

  

为什么我没有在视图中显示$ message来显示所有用户?

因为您没有检索它。使用withX()魔术方法会将您的数据放入闪存存储区。这意味着,您需要从那里检索它。

<?php 

class UserController extends Controller {

    public function index()
    {
        $message = Session::get('message');

        $users = [];

        return Redirect::make('users.index')->withUsers($users)->withMessage($message); 
    }

    public function destroy()
    {
        $deleted_message = "Some message that shows that something was deleted";

        return Redirect::route('users.index')->withMessage($deleted_message);
    }

}

在控制器index()方法的第一行看看我在做什么。我正在引用会话存储的message密钥。

当我们做的时候我们把它放在那里:

return Redirect::route('users.index')->withMessage($deleted_message);

withX()是laravel(see here)自动提供的方法。附加到with()的任何内容都将作为密钥存储到会话数据中。

如果你只是从laravel开始,依靠魔法可能不合适。为了更好地记住您实际执行的操作,您可能希望使用with()方法,而不是传递密钥和值。

return Redirect::route('users.index')->with('message', $deleted_message);

答案 1 :(得分:0)

您可以发送以下信息:

return Redirect::route('your-route')->with('global', 'Your message');

使用以下内容将其添加到您的模板中:

@if(Session::has('global'))
<p>{{ Session::get('global') }}</p>
@endif