Cakephp URL Slugs Вопрос - PullRequest
       20

Cakephp URL Slugs Вопрос

1 голос
/ 02 августа 2011

мои URL похожи на

example.com / предложения / by_city / глазго

У меня есть действие "by_city" в towns_controller, которое должно захватить часть "glasgow" и сделать что-нибудь, как я могу сделать это с cakephp? Я только хочу знать, как получить эту часть URL и сохранить ее в переменной.

Вся помощь приветствуется:)

Спасибо Dave

Контроллер городов

function city_changer($CitySlug = null) {
        $active = $this->City->find('first', array('conditions' => array('City.slug' => $CitySlug)));
        $cities = $this->City->find('all', array('order' => array('City.name', 'City.name ASC')));

        $this->set(compact('active', 'cities'));
    }

City changer.ctp

<h2>Daily Deals from <?php echo $active['City']['name'];?></h2>
<form>
    <select name="file" size="1" onchange="loadPage(this.form.elements[0])" target="_parent._top" onmouseclick="this.focus()">

<?php foreach($cities as $city) {?>        
        <option value="/new_avc/deals/by_city/<?php echo $city['City']['slug'];?>"><?php echo $city['City']['name'];?></option>
<?php }?> 

    </select>
</form>

default.ctp

<div id="header_wrapper">
    <div id="navigation">
        <div id="logo">
            <h1>Amazing Voucher Codes</h1>
        </div>
        <div id="city_nav">
            <?php echo $this->requestAction('/cities/city_changer/'.$city['City']['slug'], array('return'));?>
        </div>

Поскольку база данных, связанная с default.ctp, не связана с проблемой при получении слага для передачи контроллеру:)

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Вы должны просто иметь возможность добавить параметр $cityname к методу by_city в контроллере deals: он автоматически получит название города ( Глазго с URL выше). 1006 *

2 голосов
/ 02 августа 2011

Если не вмешиваться пользовательские правила маршрутизатора, третий параметр в URL (после контроллера / действия) является первым параметром, переданным действию.

class CitiesController extends AppController {
    function by_city( $cityName ) {
        // $cityName == 'glascow'
    }
}
...