2016-03-23 15 views
5

Tôi đang viết ứng dụng đầu tiên của mình trong laravel, đây là môi trường thực sự tốt cho các nhà phát triển Laravel mới. Để rút ngắn câu chuyện: Tôi đã tạo hai mô hình hùng hồn thông qua các lệnh thủ công php và tạo các bộ điều khiển tương ứng theo cùng một cách. Một trong số đó là mô hình "Thành viên", tôi đã tạo ra các hàm công khai bên trong lớp của bộ điều khiển, nhưng khi tôi cố POST tới tuyến nên sử dụng hàm store() mà route thực sự sử dụng hàm index().Hàm Laravel POST call index() thay vì store()

Bộ điều khiển:

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'] 
     ]; 
    } 
} 

mô hình của tôi là:

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 = [ 

    ]; 
} 

My php thợ thủ công tuyến đường: danh sách là: định nghĩa

+--------+-----------+-------------------------------+------------------------+--------------------------------------------------------+------------+ 
| Domain | Method | URI       | Name     | Action             | Middleware | 
+--------+-----------+-------------------------------+------------------------+--------------------------------------------------------+------------+ 
|  | GET|HEAD |/       |      | Closure            |   | 
|  | POST  | api/v1/members    | api.v1.members.store | App\Http\Controllers\[email protected]   |   | 
|  | GET|HEAD | api/v1/members    | api.v1.members.index | App\Http\Controllers\[email protected]   |   | 
|  | GET|HEAD | api/v1/members/create   | api.v1.members.create | App\Http\Controllers\[email protected]   |   | 
|  | DELETE | api/v1/members/{members}  | api.v1.members.destroy | App\Http\Controllers\[email protected]   |   | 
|  | GET|HEAD | api/v1/members/{members}  | api.v1.members.show | App\Http\Controllers\[email protected]    |   | 
|  | PUT|PATCH | api/v1/members/{members}  | api.v1.members.update | App\Http\Controllers\[email protected]   |   | 
|  | GET|HEAD | api/v1/members/{members}/edit | api.v1.members.edit | App\Http\Controllers\[email protected]    |   | 
|  | GET|HEAD | auth/login     |      | App\Http\Controllers\Auth\[email protected]  | web,guest | 
|  | POST  | auth/login     |      | App\Http\Controllers\Auth\[email protected]  | web,guest | 
|  | GET|HEAD | auth/logout     |      | App\Http\Controllers\Auth\[email protected]  | web,guest | 
|  | POST  | auth/register     |      | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | GET|HEAD | auth/register     |      | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | password/email    |      | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | GET|HEAD | password/email    |      | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | password/reset    |      | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | GET|HEAD | password/reset/{token}  |      | App\Http\Controllers\Auth\[email protected] | web,guest | 
+--------+-----------+-------------------------------+------------------------+--------------------------------------------------------+------------+ 

Route:

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

Tôi đã thử cả mysite.us/api/v1/members và mysite.us/api/v1/members/ - cả hai đều trả về chỉ mục() trên POST.

+0

cho chúng ta thấy lưỡi của bạn cũng . Hãy chắc chắn rằng form của bạn là phương thức 'post' –

+0

Tôi đang sử dụng plugin POSTMAN chrome để đăng nó qua URL này, tôi có cùng một mô hình chính xác được gọi là Contacts, trên cài đặt Laravel khác của tôi và nó chạy trơn tru. Và có

cũng ở dạng lưỡi dao. –

+0

kiểm tra bưu điện nếu bạn đang gửi biểu mẫu dữ liệu chứ không phải (ví dụ) json –

Trả lời

4

Vấn đề của bạn đã được giải quyết bằng cách @Arangor here

Trích:

Vấn đề đã được bổ sung thêm một dấu '/' vào URL. Vì vậy, thay vì sử dụng URL này:

mydomain.com/api/v1/messages/ 

Tôi đã thử với cái này:

mydomain.com/api/v1/messages 

và nó làm việc

Các vấn đề liên quan