将值从一个视图传递到其他laravel路径配置

时间:2015-12-28 11:18:45

标签: php laravel routes parameter-passing laravel-5.2

我刚刚开始使用laravel并且目前正在使用5.2版本。 我使用两种形式来获取数据。第一视图中的第一个表单和第二个视图中的第二个表单我需要找出一种方法来告诉第二种形式,即第一种形式的形式ID,第二种形式将链接到该形式。

我知道这可以通过使用URL传递值来完成。但我缺乏正确语法的知识。

1-重定向时如何发送数据?

2-路线应该如何?

3-如何在第二个视图中访问该值,以便在第二个表单提交时传递该值?

我已经搜索了很多关于此的内容,但无法理解这些高级语法。 任何帮助表示赞赏。

提前致谢。

这是控制器中的代码:

public function postCreateProfile(Request $request){
     //Adding attributes from $request to $profile
     $profile->save();
     Session::flash('values',$request->azauj_id);

     return redirect('/add/requirement');

}

public function getCreateRequirement(Request $request){
    $att = Session::get('value');
    Session::flash('value',$att);
    return view('req');
}

public function postCreateRequirement(Request $request){
    dd(Session::get('value'));
}

这些表单是简单的html表单,其中包含提交的帖子方法 当我使用dd(Session::get('value'));时,我得到null。这意味着该值未被传递。到提交第二个表单时调用的postCreateRequirement方法。

以下是路线。

//For Add Profile Page
Route::get('/add', 'ProfileController@getCreateProfile');
//For Add Profile Form Submission
Route::post('/add', 'ProfileController@postCreateProfile');
//For Add Requirements Page
Route::get('/add/requirement', 'ProfileController@getCreateRequirement');
//For Add Requirements Form Submission
Route::post('/add/requirement', 'ProfileController@postCreateRequirement');

1 个答案:

答案 0 :(得分:2)

1-重定向时如何发送数据?

您只需使用->with()方法通过重定向传递数据,该方法会创建一个仅在下一页显示的会话here

实施例: 假设您要将状态发送到视图,则将其添加到重定向:

            // Where you are redirecting to
redirect("/otherRoute")->with("status", "Profile updated!");
                                 // session name    // data

现在您只需检查会话是否存在并将其回显:

// If the session does not exist it will return false and not create it
@if (session("status"))
    <div class="alert alert-success">
        // echo out the session
        {{ session("status") }}
    </div>
@endif

2-路线应该如何?

路由应该在位于http目录中的routes.php文件中定义,假设您要发布应该创建路由的数据并将它们连接到控制器,如下所示:

//For Add Profile Page
Route::get('/add', 'ProfileController@getCreateProfile');
//For Add Profile Form Submission
Route::post('/add', 'ProfileController@postCreateProfile');
//For Add Requirements Page
Route::get('/add/requirement', 'ProfileController@getCreateRequirement');
//For Add Requirements Form Submission
Route::post('/add/requirement', 'ProfileController@postCreateRequirement');

3-如何在第二个视图中访问该值,以便在第二个表单提交时传递该值?

您只需在重定向中使用->with()方法

即可
public function postCreateProfile(Request $request){
     //Adding attributes from $request to $profile
     $profile->save();

     return redirect('/add/requirement')->with("value",$request->azauj_id);
}

获取值

public function getCreateRequirement(Request $request){
    $value = session("value");

    // compact it and trow it in an input to pass it trough to the last controller method
    return view('req');
}

public function postCreateRequirement(Request $request){
    $request->get("value");
}

创建一个全局会话并在之后刷新

public function postCreateProfile(Request $request){
     //Adding attributes from $request to $profile
     $profile->save();

     session("value",$request->azauj_id);
     return redirect('/add/requirement');
}

获取值

public function getCreateRequirement(Request $request){
    return view('req');
}

public function postCreateRequirement(Request $request){
    $value = session("value");
    $request->session()->forget("value");
}

注意:当somone注销时,Laravel不会刷新会话,如果没有手动刷新或使用方法$request->session()->flush();

,则会保留这些会话