2016-03-23 5 views
5

मैं लार्वेल में अपना पहला ऐप लिख रहा हूं, यह नए लार्वेल डेवलपर्स के लिए वास्तव में अच्छा वातावरण है। कहानी को छोटा करने के लिए: मैंने php artisan कमांड के माध्यम से दो वाक्प्रचार मॉडल बनाए हैं और इसी तरह के नियंत्रकों को उसी तरह बनाया है। उनमें से एक "सदस्य" मॉडल है, मैंने नियंत्रक की कक्षा के अंदर सार्वजनिक कार्यों को बनाया है, लेकिन जब मैं उस मार्ग पर पोस्ट करने का प्रयास करता हूं जो स्टोर() फ़ंक्शन का उपयोग करना चाहिए जो रूट वास्तव में इंडेक्स() फ़ंक्शन का उपयोग करता है।स्टोर के बजाए लार्वा पीओएसटी कॉल रिटर्न इंडेक्स() फ़ंक्शन()

नियंत्रक:

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\[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::group(['prefix' => 'api/v1'], function(){  
    Route::resource('members', 'MemberController'); 
}); 

मैंने mysite.us/api/v1/members और mysite.us/api/v1/members/ दोनों की कोशिश की - वे दोनों पोस्ट पर इंडेक्स() लौटते हैं।

+0

काम हमें अपने ब्लेड दिखाने के रूप में अच्छी तरह । सुनिश्चित करें कि आपका फॉर्म 'पोस्ट' विधि –

+0

है, मैं इसे इस यूआरएल के माध्यम से पोस्ट करने के लिए पोस्टमैन क्रोम प्लगइन का उपयोग कर रहा हूं, मेरे पास अन्य समान लैवेलवेल इंस्टॉलेशन पर संपर्क नामक एक ही सटीक मॉडल है और यह आसानी से चलता है। और हाँ <फॉर्म विधि = "पोस्ट"> ब्लेड रूप में भी है। –

+0

पोस्टमैन में जांचें कि क्या आप फॉर्म-डेटा भेज रहे हैं और नहीं (उदाहरण के लिए) जेसन –

उत्तर

4

आपकी समस्या @Arangor here द्वारा हल किया गया

उद्धरण:

समस्या यूआरएल के लिए उनके पीछे '/' जोड़ने था। तो, यह URL का उपयोग कर के बजाय:

mydomain.com/api/v1/messages/ 

मैं इस एक के साथ करने की कोशिश की:

mydomain.com/api/v1/messages 

और यह

संबंधित मुद्दे