- Friendly UРL-та в Laravel
WT форуми -> PHP MySQL ASP.NET -> Friendly UРL-та в Laravel
Създайте нова тема Напишете отговор 
Автор Съобщение
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2566
Мнение 27/03/2017 4:18 pm     Friendly UРL-та в Laravel Отговорете с цитат


Имам един въпрос относно урл-тата в ларавел. В момента урл-тата са
Цитат:
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
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
deam0n
Tourist Defender

Регистриран на: 01/10/2005 6:33 pm

Support: 199
Bonus: 951
Мнения: 2944
Мнение 27/03/2017 4:56 pm      Отговорете с цитат


      
public function showSubCats($categoryId) {

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

}


Явно заявката ти към базата данни използва category_name за да извади дадените записи. А ти си задал грешно име на променливата ( $categoryId ) в рутера и функцията ти, откъдето идва обърването.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2566
Мнение 28/03/2017 6:12 am      Отговорете с цитат


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             
         ]);
    }
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
joTunkiq
Активен
Активен

Регистриран на: 25/12/2012 12:03 pm

Support: 127
Bonus: 254
Мнения: 774
Мнение 28/03/2017 10:42 am      Отговорете с цитат


Laravel ти позволява да правиш мега много работи като това, свиквай хах .

Бтв, ползвай ОRМ-a на laravel-a, по-добър е, и по прегледен става и кода, това след време като го погледнеш и ще ти трябват 40 минути да обходиш базата данни 2-3 пъти, за да разбереш какво става Smile Idea Question
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2566
Мнение 28/03/2017 2:53 pm      Отговорете с цитат


joTunkiq написа:
това след време като го погледнеш и ще ти трябват 40 минути да обходиш базата данни 2-3 пъти, за да разбереш какво става Smile Idea Question


В момента е точно така Very Happy
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
redbulldog
Нов
Нов

Регистриран на: 20/04/2010 2:11 pm

Support: 0
Bonus: 0
Мнения: 50
Мнение 18/01/2018 9:06 pm     Продължение на темата Отговорете с цитат


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

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

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

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

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

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

Благодаря предварително!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 147
Bonus: 293
Мнения: 1364
Мнение 19/01/2018 12:07 am      Отговорете с цитат


@redbulldog по-добре в нова тема, за да коментираме конкретен проблем в собствена страница. Но в твоя случай, това, което търсиш, се нарича Routing. Предполагам ключовата дума ти е бягала, затова не си намерил решение досега. Ето ти линк към документацията, има достатъчно примери за параметри в URL-to - https://laravel.com/docs/5.5/routing#route-parameters
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети