2017-07-14 73 views
1

我有一个用于创建包含电子邮件,名称和密码输入的用户的表单。该表格还具有用于用户地址的5个输入(addr1-5)。奇怪的405在Laravel中不允许的方法

提交没有填写地址字段的表单工作正常,并创建用户。

但是,如果填写地址字段,则会显示405 Method Not Allowed响应。

路线:

Route::group(['prefix' => '/users'], function() { 
    Route::post('/create', [ 
     'uses' => '[email protected]', 
     'as' => 'api_create_user', 
    ]); 
}); 

形式:

<form action="{{ route('api_create_user') }}" method="POST"> 
    ... 
    <input type="text" name="addr1"> 
    <input type="text" name="addr2"> 
    <input type="text" name="addr3"> 
    <input type="text" name="addr4"> 
    <input type="text" name="addr5"> 
    ... 
</form> 

控制器:

class UserController extends Controller { 
    ... 
    public function create (RegisterRequest $request) { 
     ... 
     $address = [ 
      'addr1' => $request->input('addr1') ?? '', 
      'addr2' => $request->input('addr2') ?? '', 
      'addr3' => $request->input('addr3') ?? '', 
      'addr4' => $request->input('addr4') ?? '', 
      'addr5' => $request->input('addr5') ?? '', 
     ]; 

     $address = (object)array_filter($address); 

    $user->address = $address; 

     ... 
    } 
} 

RegisterRequest:

class RegisterRequest extends FormRequest { 
    ... 
    public function rules() : array { 
     return array(
     ... 
     'addr1' => 'nullable|string', 
     'addr2' => 'nullable|string', 
     'addr3' => 'nullable|string', 
     'addr4' => 'nullable|string', 
     'addr5' => 'nullable|string', 
     ... 
    ); 
    } 
    ... 
} 

我真的无法弄清楚问题所在。这显然不是语法我肯定导入正确的类等

任何想法?

谢谢!

+1

您可以发布'PHP工匠路线的输出:list'? – ceejayoz

+0

使用浏览器的“网络”选项卡,检查“POST”到的路由;也许它正在做一些意想不到的事情,或者在某个不该做的地方执行重定向。 –

+0

只是一个FYI,当使用'input()'so'$ request-> input('add1')?时,您可以指定默认值作为第二个参数。 '''会是'$ request-> input('add1','')'。此外,因为你只是要过滤结果,无论如何可以执行'$ address =(object)array_filter($ request-> only('addr1','addr2','addr3','addr4','addr5 '));' –

回答