লারাভেল - রুট :: রিসোর্স বনাম রুট :: কন্ট্রোলার


138

আমি লারাভেল ওয়েবসাইট, স্ট্যাক ওভারফ্লো এবং গুগলে ডকগুলি পড়েছি তবে এখনও Route::resourceএবং এর মধ্যে পার্থক্য বুঝতে পারি না Route::controller

উত্তরের মধ্যে একটি বলেছিল রুট :: রিসোর্স ক্রুডের জন্য। তবে, রুট :: নিয়ামক দিয়ে আমরা রুট :: সংস্থান হিসাবে একই জিনিসটি সম্পাদন করতে পারি এবং আমরা কেবল প্রয়োজনীয় ক্রিয়াগুলি নির্দিষ্ট করতে পারি।

তারা ভাইবোনদের মতো প্রদর্শিত হবে:

Route::controller('post','PostController');
Route::resource('post','PostController');

কীভাবে ব্যবহার করব তা আমরা কীভাবে বেছে নিতে পারি? ভাল অনুশীলন কি?


12
লারাভেল ৫.২ ব্যবহারকারীর জন্য কেবল একটি নোট, ইতিমধ্যে অন্তর্নিহিত নিয়ন্ত্রণকারীরা হ্রাস পেয়েছে।
রায়

উত্তর:


282

RESTful রিসোর্স নিয়ামক

একটি রেস্টলফুল রিসোর্স কন্ট্রোলার আপনার জন্য কিছু ডিফল্ট রুট সেট আপ করে এবং এমনকি তাদের নাম দেয়।

Route::resource('users', 'UsersController');

আপনাকে এই নামক রুটগুলি দেয়:

Verb          Path                        Action  Route Name
GET           /users                      index   users.index
GET           /users/create               create  users.create
POST          /users                      store   users.store
GET           /users/{user}               show    users.show
GET           /users/{user}/edit          edit    users.edit
PUT|PATCH     /users/{user}               update  users.update
DELETE        /users/{user}               destroy users.destroy

এবং আপনি নিজের কন্ট্রোলারটিকে এমন কিছু স্থাপন করবেন (ক্রিয়া = পদ্ধতি)

class UsersController extends BaseController {

    public function index() {}

    public function show($id) {}

    public function store() {}

}

কোন পদক্ষেপের অন্তর্ভুক্ত বা বাদ দেওয়া হয়েছে তা আপনি চয়ন করতে পারেন:

Route::resource('users', 'UsersController', [
    'only' => ['index', 'show']
]);

Route::resource('monkeys', 'MonkeysController', [
    'except' => ['edit', 'create']
]);

RESTful রিসোর্স কন্ট্রোলার ডকুমেন্টেশন


অন্তর্ভুক্ত নিয়ামক

একটি অন্তর্ভুক্ত নিয়ামক আরও নমনীয়। আপনি HTTP অনুরোধের ধরণ এবং নামের উপর ভিত্তি করে আপনার নিয়ামক পদ্ধতিতে চলে যেতে পারেন। তবে, আপনার জন্য রুটের নামগুলি সংজ্ঞায়িত করা হয়নি এবং এটি একই রুটের সমস্ত সাবফোল্ডারকে ধরে ফেলবে।

Route::controller('users', 'UserController');

এক ধরণের RESTful নামকরণ প্রকল্পের মাধ্যমে আপনাকে নিয়ামক সেটআপ করতে নেতৃত্ব দিবে:

class UserController extends BaseController {

    public function getIndex()
    {
        // GET request to index
    }

    public function getShow($id)
    {
        // get request to 'users/show/{id}'
    }

    public function postStore()
    {
        // POST request to 'users/store'
    }

}

অন্তর্ভুক্ত নিয়ামক ডকুমেন্টেশন


আপনার পছন্দ অনুযায়ী যা প্রয়োজন তা ব্যবহার করা ভাল অনুশীলন। আমি ব্যক্তিগতভাবে অন্তর্ভুক্ত নিয়ন্ত্রকদের পছন্দ করি না , কারণ তারা অগোছালো হতে পারে, নাম সরবরাহ করে না এবং ব্যবহারের সময় বিভ্রান্ত হতে পারে php artisan routes। আমি সাধারণত স্পষ্ট রুটের সাথে একযোগে RESTful রিসোর্স নিয়ন্ত্রক ব্যবহার করি ।


1
যদি আমরা বেশ কয়েকটি রিসোর্স রুট (সম্ভবত সূচক, প্রদর্শন) ব্যবহার করি তবে স্ট্যাটিক রুট রুটটি কেন ব্যবহার করবেন না :: পান (...)? আমি মনে করি এটি ব্যবহারের চেয়ে অ্যারে ('কেবল' => অ্যারে ('সূচক', 'প্রদর্শন') এর চেয়ে খারাপের চেয়ে ভাল নয় And এবং 'ইউজার / 123' এর মতো কোনও অনুরোধ করার সময়, আরআরএসটিফুল কন্ট্রোলারের জন্য কী পদ্ধতি ব্যবহার করা হয়, getIndex () এর জন্য কাজ করে 'ইউজার /' তবে ইউজার / 123 এর সাথে আমি নটফাউন্ডএইচটিপিএক্সপশন ত্রুটি পেয়েছি (বিভিন্ন নাম গেটভিউ এবং অন্যদের চেষ্টা করেছি, কেবলমাত্র কন্ট্রোলার @ গেটভিউ হিসাবে ঘোষণার সময় কাজ করে)?
সোনিক

'রিসোর্স.এডিট' এর উদ্দেশ্য কী তা কি কেউ স্পষ্ট করতে পারেন? এটি একটি জিইটি পদ্ধতি, সুতরাং আমি অনুমান করছি যে এটি 'রিসোর্স.শো'-এর মাধ্যমে সীমাবদ্ধ তথ্য না দিয়ে বরং কোনও সংস্থার সম্পূর্ণ তথ্য দেবে বলে মনে করা হচ্ছে?
অ্যান্টনি

1
@ অ্যান্টনি - resource.editহ'ল একটি সম্পাদনা ভিউ দেখাতে, মূলত একটি বিদ্যমান উত্স সম্পাদনা করার ফর্মটি।
রায়ানউইনচেস্টার

@ ফুঙ্গকু এটি আকর্ষণীয় .. তাই আপনি কি বলছেন যে রিসোর্স.এডিট আসলে জেএসএনের পরিবর্তে এইচটিএমএল ফিরিয়ে দেবে?
অ্যান্থনি

2
@ অ্যান্টনি সাধারণত, (এবং যতদূর আমি জানি) হ্যাঁ। resource.editএবং resource.createসাধারণত একটি ইউআই এর জন্য ... এইচটিএমএল ফর্মগুলির সাথে একটি ভিউ রেন্ডার করে। এই ফর্মগুলি যথাক্রমে resource.updateএবং পুট / পোষ্ট করবে resource.store। যদি আপনি এটি না করে থাকেন, তবে আপনি কেবল এগুলি উপেক্ষা করতে পারেন এবং সম্পাদনা () থেকে মুক্তি পেতে পারেন এবং আপনার নিয়ামকটিতে () পদ্ধতি তৈরি করতে পারেন।
রায়ানউইনচেস্টার

3

রুট কন্ট্রোলার পদ্ধতির জন্য আমাদের কেবল একটি রুট নির্ধারণ করতে হবে। পেতে বা পোস্ট পদ্ধতিতে আমাদের আলাদাভাবে রুটটি নির্ধারণ করতে হবে।

এবং রিসোর্সেস পদ্ধতিটি বিভিন্ন ধরণের রেস্টফল পদক্ষেপগুলি পরিচালনা করতে একাধিক রুট তৈরি করতে ব্যবহৃত হয়।

এটি সম্পর্কে লারাভেল ডকুমেন্টেশন এখানে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.