Eylemleri eksik bir eylem yapmak nasıl?

0 Cevap php

CakePHP için çok yeni.

Ben şöyle bir denetleyici üzerinde çalışıyorum:

class DesignersController extends AppController
{
    var $name = 'Designers';

    function index()
    {
        $data = $this->Designer->find('all');
        $this->set('designers', $data); 
    }

    function belle_etoile()
    {
        $this->show_designer("belle etoile");
    }

    function ritani()
    {
        $this->show_designer("ritani");
    }

    function swarovski()
    {
        $this->show_designer("swarovski");
    }

    function verragio()
    {
        $this->show_designer("verragio");
    }


    private function show_designer($designer)
    {
        $this->layout = 'first';
        $data = $this->Designer->find('first', array('conditions' => array('Designer.name' => $designer)));
        $this->set('data', $data);  
        $this->render('show_designer');
    }

}

Gördüğünüz gibi "eylemler" çok param kısayol eylemin adıdır show_designer/param eylem için kısayollar vardır.

Bu eylemlerin her biri veritabanında bir "tasarımcı" olduğunu. Ben sadece url designers/show_designer/ritani, ben değil sadece olacağını yapmak zorunda istemiyorum designers/ritani.

This works, but the problem is:

Her tasarımcı için gereksiz fonksiyonları bir grup oluşturmak zorunda, ve yeni bir tasarım ekledi alırsa ben bunun için bir işlev eklemek kadar, bu iş olmaz.

Ben oldukça istenen eylem eksik ise çalışır ve bir parametre olarak istenen eylemi olan bir işlev / eylem olurdu

Ben url istemek stardust bir eylem olarak tanımlı olmadığından bu yüzden designers/stardust, bu parametre olarak stardust ile catch_all eylemini çağırırsınız .

Peki yerine gereksiz fonksiyonların bir demet ben sadece bu olabilir:

function catch_all($action)
{
    $this->show_designer($action)
} 

Böyle bir şey yapmak için yine de var mı?

0 Cevap