URL'den CakePKP'deki model parametreleri almak nasıl?

3 Cevap php

en i var diyelim:

http://some-domain/application/controller/action/parameter

Bu şekilde CakePHP'de çalışıyor. Şimdi artık tam olarak 'parametre' ne istiyorum. Ama Modelin içinde. Nasıl bu bilgileri almak için?

Ben bir 'Next' Düğme gibi bir formüler olduğunu söylemek zorundayım ve ben beforeValidate() içinde Modelin iç girişini doğrulamak istiyor. Ama kullanıcı Gönder düğmesini tıklayarak bir anda oldu, hangi sayfasında bilmek zorunda. Bu sayfa 'parametresi' dir.

3 Cevap

CakePHP parametre iki tipi vardır, parametreleri ve adlandırılmış parametreleri geçti. Sizin örnekte gösterilen ve url parçası olarak geçilecek gibi bir geçti parametredir.

http://example.com/controller/action/passed_param
echo $this->params['passed'][0] // 'passed_param'

http://example.com/controller/action/name:param
echo $this->params['named']['name'] // 'param'

Ben senin denetleyicisi parametreleri alma ve geçti onlarla modeli yöntemlerini çağırarak öneriyoruz.

Gibi

$this->Model->find('all', array('conditions'=>array('id'=>$this->params['passed'][0])));

İşe yarıyor olarak nasıl, size yolları dosyasına bakmak isteyecektir. Senin içinde app/config/routes.php tüm yönlendirme ve hangi parçaları geçirilir bulacaksınız.

The standard cake url format is usually as follows, as you'll see in the routes. array('controller'=>'MyController', 'action'=>'MyAction', 'MyParam');

Ben params üzerinde kitapta belirli bir sayfayı bulmak gibi görünüyor, ama kılavuzları için etrafında bir google olamaz.

(MVC tasarım deseni) Model herhangi bir external değişkenlere doğrudan erişime sahip olmamalıdır. Doğru yolu Denetleyicisi veya adlı bir parametre olarak bu değişken geçmek için:

$myModelObj->doSth($getParameter);

Router::getParams() her yerde mevcuttur ve verir

    [plugin] => 
    [controller] => leads
    [action] => step1
    [named] => Array()
    [pass] => Array()
    [url] => Array(
            [ext] => html
            [url] => someurl/post-1
    )

http://api.cakephp.org/2.3/class-Router.html#_getParams