【发布时间】:2011-10-18 06:33:36
【问题描述】:
我的网址是这样的
example.com/deals/by_city/glasgow
我在一个cities_controller 中有一个动作“by_city”,它需要获取url 的“glasgow”部分并做一些事情,我怎么能用cakephp 做到这一点?我只想知道如何抓取这部分url并将其存储在变量中。
感谢所有帮助:)
谢谢 戴夫
城市控制器
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 的数据库,因此无法将 slug 传递给控制器 :)
【问题讨论】:
-
您能否澄清一下问题:您在控制器
deals中是否有操作by_city,并且您想知道该操作如何使用该参数?或者您是否将该 URL 作为字符串并且您需要提取它的最后一部分?还是别的什么? -
SluggableBehavior可以帮助您创建这些 URL 部分。只需将其附加到您的模型并将slug字段添加到您的表中。