ThinkPHP3.1新特性之Action參數綁定_PHP教程

來源:互聯網
上載者:User
ThinkPHP3.1版的Action參數綁定功能提供了URL變數和操作方法的參數綁定支援,這一功能可以使得你的操作方法定義和參數擷取更加清晰,也便於跨模組叫用作業方法。這一新特性對以往的操作方法使用沒有任何影響,你也可以用新的方式來改造以往的操作方法定義。

Action參數綁定的原理是把URL中的參數(不包括分組、模組和操作地址)和控制器的操作方法中的參數進行綁定。例如,我們給Blog模組定義了兩個操作方法read和archive方法,由於read操作需要指定一個id參數,archive方法需要指定年份(year)和月份(month)兩個參數。

class BlogAction extends Action{  public function read($id){    echo 'id='.$id;    $Blog = M('Blog');    $Blog->find($id);  }  public function archive($year='2012',$month='01'){    echo 'year='.$year.'&month='.$month;    $Blog = M('Blog');    $year  =  $year;    $month =  $month;    $begin_time = strtotime($year . $month . "01");    $end_time = strtotime("+1 month", $begin_time);    $map['create_time'] = array(array('gt',$begin_time),array('lt',$end_time));    $map['status'] =  1;    $list = $Blog->where($map)->select();  } }

URL的訪問地址分別是:

http://serverName/index.php/Blog/read/id/5http://serverName/index.php/Blog/archive/year/2012/month/03

兩個URL地址中的id參數和year和month參數會自動和read操作方法以及archive操作方法的同名參數綁定。
輸出的結果依次是:

id=5year=2012&month=03

Action參數綁定的參數必須和URL中傳入的參數名稱一致,但是參數順序不需要一致。也就是說

http://serverName/index.php/Blog/archive/month/03/year/2012

和上面的訪問結果是一致的,URL中的參數順序和操作方法中的參數順序都可以隨意調整,關鍵是確保參數名稱一致即可。
如果使用者訪問的URL地址是(至於為什麼會這麼訪問暫且不提):

http://serverName/index.php/Blog/read/

那麼會拋出下面的異常提示:

參數錯誤:id

報錯的原因很簡單,因為在執行read操作方法的時候,id參數是必須傳入參數的,但是方法無法從URL地址中擷取正確的id參數資訊。由於我們不能相信使用者的任何輸入,因此建議你給read方法的id參數添加預設值,例如:

 public function read($id=0){    echo 'id='.$id;    $Blog = M('Blog');    $Blog->find($id);  }

這樣,當我們訪問

http://serverName/index.php/Blog/read/

的時候 就會輸出

id=0

當我們訪問

http://serverName/index.php/Blog/archive/

的時候,輸出:

year=2012&month=01

http://www.bkjia.com/PHPjc/825373.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825373.htmlTechArticleThinkPHP3.1版的Action參數綁定功能提供了URL變數和操作方法的參數綁定支援,這一功能可以使得你的操作方法定義和參數擷取更加清晰,也便...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.