dongyingdao8867 2015-08-03 20:23
浏览 660
已采纳

Laravel 5中一条路由的GET和POST方法的共享数据

My projects POST routes usually makes the same view on its GET version routes.

So POST route (controller) must pass the same data to the same view.

Is there any way to tell Laravel in POST route add some data to the same data which GET route passes?

I think it's me that is on the wrong way and there must be a better way.

For example see the following common data that both GET and POST methods pass to the view. In this example there is no much data but usually there are.

/**
 * @Route('/cp/users')
 *
 * @return \Response
 */
public function getUsers() {
    $users = User::all();
    $roles = ["admin", "personnel"];
    return view('cp.users', ['users' => $users, 'roles' => $roles]);
}

/**
 * @Route('/cp/users') POST
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Support\MessageBag
 */
public function postUsers(Request $request) {
    $users = User::all();
    $roles = ["admin", "personnel"];
    $rules = [
        'name'     => 'required',
        'surname'  => 'required',
        'email'    => 'required|email|unique:users',
        'password' => 'required|min:6',
        'role'     => 'required|in:admin,personnel'
    ];
    $validator = Validator::make((array)$request, $rules);
    if ($validator->fails()) {
        return view('cp.users', ['errors' => $validator->errors(), 'users' => $users, 'roles' => $roles]);
    }
    return view('cp.users', ['users' => $users, 'roles' => $roles]);
}

I do it this way:

/**
 * @Route('/cp/users') POST
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Support\MessageBag
 */
public function postUsers(Request $request) {
    $rules = [
        'name'     => 'required',
        'surname'  => 'required',
        'email'    => 'required|email|unique:users',
        'password' => 'required|min:6',
        'role'     => 'required|in:admin,personnel'
    ];
    $validator = Validator::make((array)$request, $rules);
    if ($validator->fails()) {
        View::share('errors', $validator->errors());
    }
    return $this->getUsers();
}
  • 写回答

1条回答 默认 最新

  • duanmei1850 2015-08-03 22:02
    关注

    I think you are using route controller for that you getUsers for get and postUsers for post.If i am right then you need to use any prefix in function name that will get for both get and post method.Like that

    public function anyUsers() {
    $users = User::all();
    $roles = ["admin", "personnel"];
    return view('cp.users', ['users' => $users, 'roles' => $roles]);
    }
    

    this function will work both get and method using any prefix

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程
  • ¥15 arduino esp8266开发