2011-08-02 60 views
1

我的網址都是這樣CakePHP的URL蛞蝓問題

example.com/deals/by_city/glasgow

我在需要搶網址的「格拉斯哥」部分和cities_controller行動「by_city」做的東西我怎麼能用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')); 
    } 

市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.thtml中

<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.thtml中具有問題得到蛞蝓傳遞給控制器​​:)

+0

您能否澄清一下問題:您是否在控制器交易中使用了'by_city',並且您想知道該操作如何使用該參數?或者您是否將該URL作爲字符串,並且您需要提取它的最後部分?或者是其他東西? – JJJ

+0

編輯問題:) – Dave

+0

['SluggableBehavior'](https://github.com/CakeDC/utils/blob/master/models/behaviors/sluggable.php)可以幫助您創建這些URL部分。只需將其附加到您的模型,並添加一個'slug'字段到您的表。 – deizel

回答

2

假設沒有定製路由器規則干預,在URL中的第三個參數(控制器/動作之後)是傳遞給動作的第一個參數。

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

唯一的問題是,城市更換器是在頭不使用控制器或分貝,所以不能通過$城市名到控制器:) – Dave

+0

我不明白你的意思。你是說鏈接在佈局文件中?點擊鏈接後,它沒有任何區別。 – JJJ

+0

我已經發布了我擁有的代碼。 :) – Dave

2

你應該只能夠一個$cityname參數在deals控制器添加到by_city方法:這將自動獲得城市名稱(格拉斯哥從上面的網址)。

+0

唯一的問題是,城市轉換器是在不使用控制器或db的標題:) – Dave

+0

標題是一個視圖像任何其他:它呈現控制器方法中的數據集。將城市名稱變量添加到控制器中的視圖數據中,您應該沒問題。您正在使用渲染控制來混合訪問網址細分。 – Femi

+0

抱歉不知道你的意思是什麼:) – Dave