【问题标题】:Route not found in custom form request在自定义表单请求中找不到路由
【发布时间】:2017-02-17 05:51:42
【问题描述】:

我使用 laravel 自定义表单请求和命令 php artisan make:request AddressBookRequest
并在我的控制器中使用该请求,例如:

public function add_address_book($lang,$user_id,AddressBookRequest $request){
 dd($request);
}

当我运行 api route laravel 显示:

 NotFoundHttpException in RouteCollection.php line 161:

但是当我将 AddressBookRequest 更改为 Request 时:

 public function add_address_book($lang,$user_id,Request $request){
 dd($request);
}

Api 工作正常

地址簿请求:

<?php namespace App\Http\Requests;

 use App\Http\Requests\Request;

class AddressBookRequest extends Request
{
/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
          return [
              'title' => 'required',
              'address' => 'required',
              'latitude' => 'required',
              'longitude' => 'required'
          ];
}

public function messages()
{
    return [
              'title.required' => trans('address_book.title_required'),
              'address.required' => trans('address_book.address_required'),
              'latitude.required' => trans('address_book.latitude_required'),
              'longitude.required' => trans('address_book.longitude_required'),
    ];
}


}

AddressBookController 用例:

<?php namespace App\Http\Aggregate\Address_book\Controller\v1_0;

 use App\Http\Requests\AddressBookRequest;
 use Illuminate\Routing\Controller as BaseController;
 use EventHomes\Api\ApiController;
 use JWTAuth;

 class AddressBookController extends BaseController
 {

还有路线:

  Route::group(['namespace' => 'Aggregate\Address_book\Controller\v1_0', 'middleware' => 'jwt.auth', 'prefix' => 'api/v1.0/{lang}'], function () {
   Route::post('customer/{id}/address_book', 'AddressBookController@add_address_book');
  });

如何修复它以使用自定义请求?

任何帮助将不胜感激

【问题讨论】:

  • 将此添加到控制器文件的顶部使用 App\Http\Requests\AddressBookRequest;
  • 我加了但是还是不行
  • 你现在遇到什么错误?
  • 检查你的请求目录路径是否为App\Http\Requests\AddressBookRequest

标签: php laravel laravel-5.2 laravel-routing


【解决方案1】:

您应该将此行添加到控制器的顶部:

use App\Http\Requests\AddressBookRequest;

另外,确保自定义请求类中的authorize() 方法返回true

public function authorize()
{
    return true;
}

【讨论】:

  • 您现在遇到什么错误?请显示您使用的路线。
  • 同样的错误,路由:Route::group(['namespace' =&gt; 'Aggregate\Address_book\Controller\v1_0', 'middleware' =&gt; 'jwt.auth', 'prefix' =&gt; 'api/v1.0/{lang}'], function () { Route::post('customer/{id}/address_book', 'AddressBookController@add_address_book'); });
【解决方案2】:

我通过添加来修复它:

 use Illuminate\Foundation\Http\FormRequest;
 use EventHomes\Api\ApiController;

 abstract class Request extends FormRequest
 {
    use ApiController;

    public function response(array $errors)
    {
       foreach($errors as $key=>$error)
       {
         return $this->respondUnprocessable(1004,'validation',$errors[$key][0]);
       }
    }

}

requst.php

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2016-11-28
    • 2021-09-04
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多