Laravel:如何在刀片中将变量从一个页面发送到另一个页面

时间:2016-10-05 17:31:19

标签: php laravel laravel-5 blade laravel-blade

我正在构建一个laravel应用程序,其中第一页我要向表单中的第二页发送变量或说值。我该怎么办? 让我们说在我的第一页中我有几个按钮,所以当用户点击任何一个按钮时,他将被重定向到另一个他必须提交表单的页面。 在第一页中,当他选择一个按钮时,他会自动选择一个course_id,它也将在第二页表格内提交。但是如何从第一页按钮发送course_id?

<li> <a  href="{{route('registration')}}">A</a> </li>
 <li> <a href="{{route('registration')}}" >B</a> </li> 

当用户点击按钮第二页时会出现..我要提交一个表格,其中course_id将来自第一页,表示<a>标签

这是我的表单演示:

{!! Form::open(array('route' => 'postRegistration','class'=>'form-horizontal','method'=>'POST'))  !!}
                {!! Form::token(); !!}
              {!!   csrf_field() ; !!} 

    <div class="form-group">
              <label class="sr-only" for="form-first-name">Name</label>
                      <input type="text" name="name" placeholder="Name..." class="form-first-name form-control" id="form-first-name">
   </div>
     <div class="form-group">
                <label class="sr-only" for="form-email">Email</label>
                       <input type="text" name="email" placeholder="Email..." class="form-email form-control" id="form-email">
       </div>

      <div class="form-group">
           <label class="sr-only" for="form-last-name">Address</label>
              <textarea rows="4" style="height:100px;" name="address" placeholder="Address..." class="form-last-name form-control" id="form-last-name"></textarea>
        </div>
<button type="submit" class="btn">Submit</button>
             {!! Form::close() !!}

在我的数据库中,我必须提交上述字段以及数据库中的course_id。 我怎么在Laravel中做到这一点?

请提出任何建议或解决方案吗?

3 个答案:

答案 0 :(得分:2)

您可以将变量作为路由参数发送。为此,请更改此<a>代码。

<li> <a href="{{route('registration', ['course_id' => 'A'])}}">A</a> </li>
<li> <a href="{{route('registration', ['course_id' => 'B'])}}">B</a> </li> 

然后您需要允许registration路由获取参数。假设你的路线是这样的

Route::get('/registration', [
    'as' => 'registration', 'uses' => 'SomeController@method'
]);

将其更改为

Route::get('/registration/{course_id}', [
    'as' => 'registration', 'uses' => 'SomeController@method'
]);

现在您必须将此参数添加到SomeController@method

public method($course_id){ ... }

现在将此$course_id传递给您的表单视图。要使用其他字段提交此变量,可以将其添加为隐藏输入字段。

<div class="form-group">
    <input type="hidden" name="course_id" value="{{ $course_id }}">
</div>

答案 1 :(得分:1)

因此,您希望创建包含多个课程链接的页面,并且每个链接都会重定向到注册页面,并在注册表单中使用该课程ID。

您的href链接应该如下所示

{!! link_to_route('registration', 
$title = 'Course 1', $parameters = ['1'], $attributes = 
['class'=>'btn btn-success']) !!}

路由文件 web.php

Route::get('/registration/{course_id}','
CourseRegistration@showForm')->name('registration');

CourseController CourseController

public function showForm($course_id){
    return view('registration')->with('courseid',$course_id);
}

现在您可以在视图中使用$ courseid访问课程ID。如果要在表单中传递它,请使用数据创建隐藏或输入标记。

答案 2 :(得分:0)

据我所知,您正在寻找一种类型的网络应用,当用户提交表单时,页面会打开并显示注册的用户详细信息。 这可以在Laravel中完成,如下所示:

<强> routes.php文件

// For submitting form on this route
Route::post('users/register', 'UsersController@create')->name('users.register');
// For showing user's profile via user's id
Route::get('users/{id}/profile', 'UsersController@show')->name('users.profile');

<强> UsersController.php

class UsersController {

    public function create() {
        $inputs = request()->all();
        // Use Eloquent to save user info to DB and fetch insert id from DB...
        return redirect()->route('users.profile', array('id' => $insert_id));
        // Will open registered user profile page
    }

    public function show($id) {
        $user = User::find($id);
        if(!$user) {
            abort('404');
        }
        return view('users/profile', compact('user'));
        // At the users/profile.php page you can use $user variable to populate user's info
    }

}

使用路径方法并在Blade中传递带路径的数据

{{ route('users.profile', array('id' => $user->id)) }}

如需更多帮助,see this >>

希望这能帮到你!