PHP路由未定义laravel


PHP Route not defined laravel

在一个工作门户网站上工作,所以我到了雇主需要编辑他们发布的工作的时候,在页面加载时,它给了我一个错误Route [employers/job/save/Mw==] not defined,请我需要帮助,我的截止日期是3小时后!

这是我的代码:

路线:

//Route for Employer's specified Job Editting -> To get ID as argv
Route::get('employers/job/edit/{id}', 'employerController@editJob');
//Route for Employer's to save specified Job  after Editting -> To get ID as argv
Route::post('/employers/job/save/{id}', [ 
    'as' => 'saveJob',
    'uses' => 'employerController@saveJob'
]);

视图:

{{ Form::open(['action'=>'employers/job/save/'.base64_encode($jobData->id),'class'=>'full-job-form', 'id'=>'jobForm','role'=>'form']) }}
    <div class="form-group col-lg-12 col-sm-12 col-md-12">
        <label class="sr-only" for="">Job Title</label>
        <input type="text" class="form-control"
            name="job_title" placeholder="Job Title"
            value="{{ $jobData->job_title }}">
        <span class="help-block">Eg. Marketing Manager</span>
    </div>

您的问题是在Form::open()调用中使用action参数。这需要控制器方法的名称(例如{{ Form::open(['action' => 'employerController@saveJob']) }}。如果您想链接到预先生成的URL,请使用url参数:

{{ Form::open(['url' => 'employers/job/save/'.base64_encode($jobData->id)]) }}

也就是说,这不是最好的做法,因为如果你改变路由系统,你现在必须改变所有这些硬编码的URL。因此,您应该依赖命名路由或控制器操作。

现在,您的路由已经命名为('as' => 'saveJob'),因此您实际上应该使用Form::open():的route参数

{{ Form::open(['route' => ['saveJob', base64_encode($jobData->id)]]) }}

或者,您可以像当前尝试的那样使用action参数(尽管是错误的):

{{ Form::open(['action' => ['employerController@saveJob', base64_encode($jobData->id)]]) }}

有关详细信息,请参阅表单上的文档。


此外,正如@TheShiftExchange所说,使用64进制编码的id有点奇怪,为什么不使用原始id呢?