Friendly UРL-та в Laravel

vinsbg

Registered
Имам един въпрос относно урл-тата в ларавел. В момента урл-тата са
http://site/category/1
целта ми е да направя
http://site/category/categoryName
route-то ми е
Код:
Route::get('/category/{categoryId}', ['uses' => 'CategoryProducts@showSubCats']);

контролера нямам нищо по-различно от една заявка..
Код:
public function showSubCats($categoryId) {

 // заявка към базата

}
Това, което ми е странно е, че в момента бутона на <a href> ми е
Код:
<a href="{{ URL::to( '/category/' .  $category_menu->category_name) }}">{{ $category_menu['category_name'] }}</a>
Защо работи? Когато натисна на линка ми се отваря http://site/category/categoryName ... рутера и контролера чакат за ID, а аз им пращам category_name. Защо страницата се зарежда нормално все едно съм изпратил ID-то? :idea:
 
Код:
public function showSubCats($categoryId) {

 // заявка към базата

}

Явно заявката ти към базата данни използва category_name за да извади дадените записи. А ти си задал грешно име на променливата ( $categoryId ) в рутера и функцията ти, откъдето идва обърването.
 
deam0n каза:
Код:
public function showSubCats($categoryId) {

 // заявка към базата

}

Явно заявката ти към базата данни използва category_name за да извади дадените записи. А ти си задал грешно име на променливата ( $categoryId ) в рутера и функцията ти, откъдето идва обърването.
Ами не мисля, че е използва category_name ... това е заявката и се вижда, че си е $categoryId. Няма как да е по name-а, защото заявката тогава няма да работи..
Код:
    public function showSubCats($categoryId) { 

	 $subcats = DB::table('sub_category as sc')
	    ->leftJoin('products as p', 'p.sub_cat_id', '=', 'sc.sub_cat_id')
	    ->where('sc.category_id', '=', $categoryId)
	    ->whereNotNull('p.sub_cat_id')
	    ->select('p.*','sc.*', DB::raw('sc.sub_cat_id AS sub_cat_id'))
	    ->groupBy('sc.sub_cat_id')
	    ->get();

         return View::make('site.subcategory', [            
              'subcats' => $subcats             
         ]); 
    }
 
Laravel ти позволява да правиш мега много работи като това, свиквай хах .

Бтв, ползвай ОRМ-a на laravel-a, по-добър е, и по прегледен става и кода, това след време като го погледнеш и ще ти трябват 40 минути да обходиш базата данни 2-3 пъти, за да разбереш какво става :) :idea: :?:
 
joTunkiq каза:
това след време като го погледнеш и ще ти трябват 40 минути да обходиш базата данни 2-3 пъти, за да разбереш какво става :) :idea: :?:

В момента е точно така :D
 
Здравейте. Намерих тази тема и реших да задам въпроса си в нея, тъй като е свързаната с въпроса по-нагоре.

Пиша сайт на Laravel 5.5, но тъй като съм много нов в Laravel като цяло и не мога да разбера как да направя следното нещо.

Искам адресите на сайта да са във вида:

http://site.com/{category}/{subcategory}?/{article}

В случая всеки параметър трябва да е slug-a на категорията или съответно статията.

Моля Ви дайте идея как да стане, защото или е прекалено лесно и го пропускам или има нещо, което просто не разбирам.

Благодаря предварително!
 
@redbulldog по-добре в нова тема, за да коментираме конкретен проблем в собствена страница. Но в твоя случай, това, което търсиш, се нарича Routing. Предполагам ключовата дума ти е бягала, затова не си намерил решение досега. Ето ти линк към документацията, има достатъчно примери за параметри в URL-to - https://laravel.com/docs/5.5/routing#route-parameters
 

Горе