Intereting Posts
Как отправить данные о форме сериализации с помощью JQuery, если входной элемент является массивом как я могу получить диапазон дат на прошлой неделе в php? Не работает переменная сеанса WordPress ошибка rabbitmq при подключении Как отображать последние комментарии от Facebook Комментарии социальный плагин? Как удалить нулевые значения из массива? Загрузка образа с кодировкой Base64 на сервер PHP Как создать пользовательскую страницу администратора в opencart? PHP: обработка специальных символов с помощью iconv php zend gdata помещает документ / файл в категорию / папку Google Docs Функция переадресации не работает на реальном сервере. Но работа на localhost Правильный способ создания соленых хеш-паролей Сохраненные процедуры с использованием CodeIgniter Шифровать html-код в исходном виде Добавить функцию загрузки изображения внутри существующего кода ajax

Маршрутизация Laravel меняется

У меня есть таблица категорий, которая выглядит так:

-- id -- parent_id -- name 1 0 electronics 2 1 Televisions 3 2 LCD TVs 4 2 Plasma Tvs 5 1 DVD Players 6 1 Bluray Players 7 0 Home Appliances 8 7 Cookers 9 7 Fridges & Freezers 10 0 Fashion 11 10 Mens Clothing 12 11 Shirts 13 10 Womens Clothing 14 13 Skirts 

и т. д. – проблема, которую я испытываю, – это некоторые категории, которые являются единственными, а другие могут быть 3 или 4 глубины.

У меня есть страница списка, которая будет разбивать на страницы все элементы в данной категории и покажет дочерние категории этой категории для дальнейшего сверления и т. Д. До тех пор, пока не будет достигнут последний ребенок.

У меня есть 2 проблемы 1, как это сделать, чтобы он соответствовал / products / {parent_category} /? If_exists_child_category / if_exists_child_child / if_exists_child_child_child

следующий находится на главной странице. У меня есть продукты, и вам нужно сослаться на страницу продукта и включить полный путь к ней. product / parent_cat / if_exists_sub_cat / if_exists_sub_sub_cat / if_exists_sub_sub_sub_cat / product_name * У меня есть идея, как сделать это маршрутизацию проблема – моя главная проблема.

или даже если бы я мог просто захватить все после prodocucts /, я мог бы затем взорвать его в массив и прокрутить по категориям, а также найти продукт и отобразить правильный вид.

Спасибо всем заранее и счастливо почти Рождество 🙂

Я предлагаю вам изменить свои URL-адреса, чтобы они имели часть, которая будет использоваться для маршрутизации, и та, которая будет использоваться для целей SEO. Вот что я имею в виду:

 /products/view/{product_id}/{category_name}/{category_name}/{etc}/{product_name} /products/category/{category_id}/{category_name}/{category_name}/{etc} 

Это имеет то преимущество, что вы можете игнорировать тот факт, что вы не всегда будете иметь одинаковое количество категорий. Ваша маршрутизация зависит только от первых нескольких сегментов URL.

 Route::get('products/view/{id}/{seo-slug?}', array('as' => 'product', function($id, $seoSlug){ $product = Product::find($id); // ... }))->where('seo-slug', '.*'); Route::get('products/category/{id}/{seo-slug?}', array('as' => 'category', function($id, $seoSlug){ $category = Category::find($id); // ... }))->where('seo-slug', '.*'); 

Теперь, когда дело доходит до создания ссылок, вам будет трудно использовать только вспомогательные функции Laravels. Давайте создадим свои собственные. Один из способов – добавить функцию к моделям продуктов и категорий. (Вы также можете написать функцию, которая не зависит от моделей, базовая функциональность остается той же)

Продукт

 public function getUrl(){ $categoryNames = array('cat1', 'cat2', 'cat3'); // use/create a function on the category model that uses recursion to determine all the categories of the tree $seoSlug = implode('/', $categoryNames); // ... maybe add other stuff to $seoSlug return route('product', array($this->id, $seoSlug)); } 

категория

 public function getUrl(){ $categoryNames = array('cat1', 'cat2', 'cat3'); // use the same function as above $seoSlug = implode('/', $categoryNames); // ... maybe add other stuff to $seoSlug return route('category', array($this->id, $seoSlug)); } 

Перенаправить «неправильные» URL-адреса

Если вы хотите, вы можете переадресовать URL-адреса, у которых есть неправильный SEO-пул. Значит, можно было бы просто ввести:

 /products/view/183 

Это также может служить сокращением URL-адреса для отправки ссылок в электронной почте и т. Д.

Чтобы проверить URL-адрес, а затем перенаправить, вы можете просто сравнить текущий URL-адрес с «свежей» сгенерированной. Как это:

 Route::get('products/view/{id}/{seo-slug?}', array('as' => 'product', function($id, $seoSlug){ $product = Product::find($id); $productUrl = $product->getUrl() if(Request::url() !== $productUrl){ return Redirect::to($productUrl); } // ... }))->where('seo-slug', '.*'); 

О, и веселое рождество вам тоже!