web-gelistirme-sc.com

Denetleyiciyi CakePHP'de farklı bir görünüme dönüştürme

Bir denetleyiciyi normalden farklı bir görünüme dönüştürmenin bir yolu var mı? Bazı verileri denetleyiciden varsayılan olmayan bir görünüme geçirmeye çalışıyorum. Yani kontrolörüm denir:

class StocksRealtimeController extends AppController {
    var $uses               = 'StockRealtime';
    function index(){
        $action = '/TestView';
        $this->set('stocksRT', $this->StockRealtime->find('all'));
        //$this -> viewPath = 'Pages';
        $this -> render('/TestView/index');
    }
}

... ve Görünümüm görünümlerde-> TestView-> index.ctp

Bir diğer sorum ise, bu değeri CakePHP çerçevesinin dışındaki bir ctp dosyasına değil PHP 'ye nasıl aktaracağım? 

Her şeyi denedim burada şanssız.

24
devmonster

Doğru yol:

$this -> render('TestView/index');

Yukarıdaki cevapta belirtildiği gibi, değişkeni Görünüme aktarmak için $this->set öğesini kullanabilirsiniz. 

Ancak, bu size istediğinizi vermezse, başka bir düzen (varsayılan olmayan düzen) görüntülemek için de işlem yapmak istediğinizi tahmin ediyorum. $this -> layout = 'layoutname'; yapmayı deneyebilirsiniz (Düzenler düzen klasöründe, varsayılan ayar default.ctp)

Not: CakePHP'nin denetleyicisi verileri görüntülemeyen bir dosyaya (.php gibi) aktarabilecek şekilde tasarlanmamıştır. CakePHP'nin görüşleri .ctp ile bitiyor olmalı

53
40Plot

Kullanmayı tercih ederim:

$this->view = 'file';

çünkü $this->set('var', $val)'dan sonra sahip olacağınız herhangi bir $this->render('file') görünümünüze erişemez.

CakePHP 3.x uygulamasında:

$this->viewBuilder()->template('file');
41
Sabin Neagu

Görünümün adını .ctp uzantısı olmadan koymaya çalışın.

$this->render('file');
11
user1548335
class StocksRealtimeController extends AppController
{
   var $uses = 'StockRealtime';

   function index( )
   {
     $this->layout     = NULL;
     $this->autoRender = false;

     $this->set('stocksRT', $this->StockRealtime->find('all'));

     return $this -> render('/TestView/index');
     /*
        $this -> render('/TestView/index');
        Here 'TestView' must be a Folder named same as "public $name" variable value        
        in Controller and an "index.ctp" must be situated under TestView Folder.
       'index'
     */
   }
}

Bir deneyin, görünüm sayfasını başarılı bir şekilde işlemek için 'KEYWORD' ifadesiyle geri dönün . 2. soru için üzgünüm, anlamadım ..__ CakePHP'ye göre, değişken [stocksTR] kullanılarak ayarlandı. . $ this -> set (), ayrıca görüntüleme sayfasını manuel olarak görüntüleyebilecek [[index.ctp ']. 

3
mistertandon
public function admin_index() { 

    $this->layout = 'admin/table';

    $action = '/Vendors';

    $this->Prg->commonProcess('Vendor');

    $this->paginate = array('conditions' => array($this->Vendor->parseCriteria($this->passedArgs)), 'order' => 'Vendor.created_on DESC', 'limit' => 15);

    $this->set('vendor', $this->paginate('Vendor'));

    $this->render('/vendors/admin_items');
}
0
Ajay Kori
class StocksRealtimeController extends AppController {
var $uses               = 'StockRealtime';

    function index(){

       $this->layout = NULL;
       $this->autoRender = false;

       $this->set('stocksRT', $this->StockRealtime->find('all'));

       $this -> render(`/TestView/index`);

    }
}
0
 $this->view  = '/TestView/index';
 $this->set('stocksRT', $this->StockRealtime->find('all'));
0
giuseppe