Laravel POST调用返回index()函数,而不是store()函数


Laravel POST call returns index() function instead of store()

我正在用laravel编写我的第一个应用程序,这对新的laravel开发人员来说是一个非常好的环境。简而言之:我通过php-artisan命令创建了两个雄辩的模型,并以同样的方式创建了相应的控制器。其中之一是"Members"模型,我在控制器的类中创建了公共函数,但当我尝试POST到应该使用store()函数的路由时,该路由实际上使用了index()函数。

控制器:

namespace App'Http'Controllers;
use Illuminate'Http'Request;
use App'Http'Requests;
use App'Member;
use Response;
class MemberController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $members = Member::all();
        return Response::json([
            'data' => $this->transformCollection($members)
        ], 200);
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create()
    {
        //
    }
    /**
     * @param Request $request
     * @return mixed
     */
    public function store(Request $request)
    {
        if(! $request->email){
            return Response::json([
                'error' => [
                    'message' => 'Please Provide email'
                ]
            ], 422);
        }
        $Member = Member::create($request->all());
        return Response::json([
            'message' => 'Member Created Succesfully',
            'data' => $this->transform($Member)
        ]);
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        $Member = Member::find($id);
        if(!$Member){
            return Response::json([
                'error' => [
                    'message' => 'Member does not exist'
                ]
            ], 404);
        }
        return Response::json([
            'data' => $this->transform($Member)
        ], 200);
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function edit($id)
    {
        //
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update(Request $request, $id)
    {
        if(! $request->user_id){
            return Response::json([
                'error' => [
                    'message' => 'Please Provide user_id'
                ]
            ], 422);
        }
        $Member = Member::find($id);
        if($request->email){
            $Member->email = $request->email;
        }
        if($request->first_name){
            $Member->first_name = $request->first_name;
        }
        if($request->last_name){
            $Member->last_name = $request->last_name;
        }
        if($request->phone){
            $Member->phone = $request->phone;
        }
        if($request->address_one){
            $Member->address_one = $request->address_one;
        }
        if($request->address_two){
            $Member->address_two = $request->address_two;
        }
        if($request->zip_code){
            $Member->zip_code = $request->zip_code;
        }
        if($request->city){
            $Member->city = $request->city;
        }
        if($request->county){
            $Member->county = $request->county;
        }
        if($request->state_region){
            $Member->state_region = $request->state_region;
        }
        if($request->country){
            $Member->country = $request->country;
        }
        if($request->job_title){
            $Member->job_title = $request->job_title;
        }
        if($request->company){
            $Member->company = $request->company;
        }
        if($request->clearance_level){
            $Member->clearance_level = $request->clearance_level;
        }
        $Member->save();
        return Response::json([
            'message' => 'Member Updated Succesfully',
            'data' => $this->transform($Member)
        ]);
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id)
    {
        Member::destroy($id);
    }
    /**
     * @Description Data transform
     * @param $contacts
     * @return array
     */
    private function transformCollection($contacts)
    {
        return array_map([$this, 'transform'], $contacts->toArray());
    }
    /**
     * @Description Data transform
     * @param $contact
     * @return array
     */
    private function transform($contact)
    {
        return [
            'id' => $contact['id'],
            'fname' => $contact['first_name'],
            'lname' => $contact['last_name'],
            'email' => $contact['email'],
            'address' => $contact['address_one']
        ];
    }
}

我的型号是:

namespace App;
use Illuminate'Database'Eloquent'Model;
use Illuminate'Http'Request;
class Member extends Model
{
    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'members';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'email',
        'first_name',
        'last_name',
        'phone',
        'address_one',
        'address_two',
        'zip_code',
        'city',
        'county',
        'state_region',
        'country',
        'job_title',
        'company',
        'clearance_level',
    ];
    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = [
    ];
}

我的php手工路线:列表是:

+--------+-----------+-------------------------------+------------------------+--------------------------------------------------------+------------+
| Domain | Method    | URI                           | Name                   | Action                                                 | Middleware |
+--------+-----------+-------------------------------+------------------------+--------------------------------------------------------+------------+
|        | GET|HEAD  | /                             |                        | Closure                                                |            |
|        | POST      | api/v1/members                | api.v1.members.store   | App'Http'Controllers'MemberController@store            |            |
|        | GET|HEAD  | api/v1/members                | api.v1.members.index   | App'Http'Controllers'MemberController@index            |            |
|        | GET|HEAD  | api/v1/members/create         | api.v1.members.create  | App'Http'Controllers'MemberController@create           |            |
|        | DELETE    | api/v1/members/{members}      | api.v1.members.destroy | App'Http'Controllers'MemberController@destroy          |            |
|        | GET|HEAD  | api/v1/members/{members}      | api.v1.members.show    | App'Http'Controllers'MemberController@show             |            |
|        | PUT|PATCH | api/v1/members/{members}      | api.v1.members.update  | App'Http'Controllers'MemberController@update           |            |
|        | GET|HEAD  | api/v1/members/{members}/edit | api.v1.members.edit    | App'Http'Controllers'MemberController@edit             |            |
|        | GET|HEAD  | auth/login                    |                        | App'Http'Controllers'Auth'AuthController@getLogin      | web,guest  |
|        | POST      | auth/login                    |                        | App'Http'Controllers'Auth'AuthController@postLogin     | web,guest  |
|        | GET|HEAD  | auth/logout                   |                        | App'Http'Controllers'Auth'AuthController@getLogout     | web,guest  |
|        | POST      | auth/register                 |                        | App'Http'Controllers'Auth'AuthController@postRegister  | web,guest  |
|        | GET|HEAD  | auth/register                 |                        | App'Http'Controllers'Auth'AuthController@getRegister   | web,guest  |
|        | POST      | password/email                |                        | App'Http'Controllers'Auth'PasswordController@postEmail | web,guest  |
|        | GET|HEAD  | password/email                |                        | App'Http'Controllers'Auth'PasswordController@getEmail  | web,guest  |
|        | POST      | password/reset                |                        | App'Http'Controllers'Auth'PasswordController@postReset | web,guest  |
|        | GET|HEAD  | password/reset/{token}        |                        | App'Http'Controllers'Auth'PasswordController@getReset  | web,guest  |
+--------+-----------+-------------------------------+------------------------+--------------------------------------------------------+------------+

路线定义:

Route::group(['prefix' => 'api/v1'], function(){       
    Route::resource('members', 'MemberController');
});

我都试过了‍mysite.us/api/v1/membersmysite.us/api/v1/members/

它们都在CCD_ 4上返回CCD_。

您的问题已由@Arangor在这里解决

报价:

在URL中添加尾部"/"时出现问题。因此,与其使用以下URL:

mydomain.com/api/v1/messages/

我试过这个:

mydomain.com/api/v1/messages

它起到了的作用

将CSRF字段添加到表单

例如:

<form id="form-login" class="m-t form-horizontal" role="form" method="post" action="/login">
                                    {{csrf_field()}}