2015-02-14 3 views
0

абсолютно новый для cakephp и действительно пытается понять документы.Cakephp 2 Маршрутизация/SEO дружественные URL

Идея, над которой я работаю, предназначена для поиска недвижимости. У меня есть контроллер rentalsController

В здесь у меня есть индекс, который Принести все

У меня также есть боковая панель, которая перечисляет регионам

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

Это будет звонить (может быть неправильно здесь) rentalsController> byRegion ($ область) {принести ....)

Как я а) настраивать маршруты для управления этим, и б) функцию для сбора пройденной области.

Извините, если это базовое, но я искал и теперь собираюсь взорвать свой ум - как вы можете себе представить - мы все здесь были в какой-то момент, изучая новый способ делать что-то.

Спасибо за все ваши отзывы - Марк

EDIT

Наконец получил там:

Router::connect(
    '/rentals-in-:region.html', 
    array('controller' => 'rentals', 'action' => 'byRegion'), 
    array('region' => '[a-zA-Z0-9\-]+', 'pass' => array('region'), 
)); 

ответ

1

а) Если вы новичок в торт, я бы не рекомендовал, чтобы поиграть в вашем файл маршрутов. Если вы следуете соглашениям торта, вы можете получить доступ к вашему действию RentalController :: byRegion ($ region), вызывая/rentals/by_region/{region_name}.

Не забудьте создать приложение просмотра файлов/View/аренда/by_region.ctp

б) Предполагая, что ваша таблица аренды имеет поле региона:

public function byRegion ($region){ 
    $this->set ('rentals', $this->Rental->find ('all', array (
     'conditions' => array (
      'Rental.region LIKE' => $ region 
     ) 
    ))); 

редактировать:

чем вы ищете:

Router::connect(
    '/rentals/:region', 
    array('action' => 'byRegion'), 
    array('region' => '{your regex matching region}') 
); 

Добавьте это в свой файл маршрутов. Теперь вы должны иметь возможность вызвать URL-адрес, как вы упомянули. Должен работать, но я не тестировал его.

+0

Привет, Бен - Спасибо за ваш ответ, но это не совсем то, что я ищу - я ищу тот же эффект, который мы можем произвести с помощью перезаписи htaccess. ie - RewriteRule^rentals - (. *). Html $ rentals.php? Region = $ 1 [l] – Gravesy

+0

Я обновил свой пост. Теперь он должен соответствовать – Ben

+0

спасибо бен - вы где рядом с редактировать это то, что нужно, в конце концов Router :: подключения ( \t «/rentals-in-:region.html», \t массива («контроллер» => 'rentals', 'action' => 'byRegion'), \t array ('region' => '[a-zA-Z0-9 \ -] +', 'pass' => array ('region'), )); – Gravesy