在Laravel中将数据从视图传递到控制器

时间:2014-06-30 22:43:44

标签: php laravel laravel-4

我知道通过网址传递记录ID通常不是一个好主意,但我想知道在我的情况下如何避免它:

我的目标是在用户信息中心列出工作状态,并允许用户调整状态。

我使用会话创建视图并将变量传递给它:

userController.php

public function getdashboard()
    {
       //reading the user information
    $arrPageData['user'] = Sentry::getUser();
       //reading the job interviews
    $arrPageData['jobInterviews'] = JobInterview::readCurrentInterviews($this->userID);

    return View::make('clients.dashboard', $arrPageData);
    }

这部分效果很好,我不会在路线中使用记录ID。我遍历仪表板视图中的jobInterviews。根据数据库表中列出的状态,我给出了用户选项

查看文件:dashboard.blade.php(摘录)

@foreach ($jobInterviews as $interviews)
    @if ($interviews->j == $job->id)
        <tbody>
        <tr>
        <td>
        {{$interviews->contact_name}}
        @if ($interviews->status == 'interview request accepted')

    <a href="#"  class="btn btn-danger btn-small" data-toggle="modal" data-target=".mymodal{{ $interviews->interview_id }}">Hire</a>
       @elseif ($interviews->status == 'hired')
        <button id="complete" class="btn btn-info btn-small">Mark Project Complete</button>
        @endif
        </td>
        <td>{{$interviews->status}} </td>
        </tr>
        </tbody>
         ...

我遇到的问题是要完成作业状态更改,我调用方法并传入记录ID:

仍然在dashboard.blade.php

<form action="../jobs/offer/{{$interviews->interview_id}}" method="post">

然后通过以下路由:

Route::post('/jobs/offer/{id}','JobController@jobOffer');

一切都按照我的意愿行事,但我不认为我是从安全角度出发做的。有没有更好的方法来调用jobOffer方法并更改状态,除了在从迭代的数组中获取数据时使用路径中的记录ID?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

{{ Form::open(array('action' => array('JobController@jobOffer', $interviews->interview_id))) }}
    <!-- Rest of the form fields -->
{{ Form::close() }}

这样您就不需要手动添加csrf/_method输入,默认情况下METHOD将是POST,因此您可以省略它。

相关问题