CakePHP Özel veri formları

1 Cevap php

CakePHP grup tabanlı ACL yönetmek için bir kontrol inşa ediyorum ve oluşturmak veya bir grubu düzenlemek zaman ben sahip olduğu izinlerden seçmek mümkün olmak istiyorum. Izinleri ACO / ARO tabloda saklanır gibi grup veri tablosu sadece bir grup kimliği ve bir grup adı saklar.

Ben o ACO bu gruptan erişime izin onları kontrol böylece onay kutularını bir dizi dönüştürmek istediğiniz ACO bir dizi var. Böylece ilk kapalı, nasıl onay kutularını bir dizi içine bu diziyi çevirmek yok. Dizi bu gibi görünüyor:

array(
    [0] => array(
        [Aco] => array(
            [alias] => 'alias'
            [id] => 1)
        [children] => array (
            [0] => array(
                [Aco]=>
            ...etc  
    ))
    [1] => array(
        ...etc
)

Benim sonraki soru formu seçilen eylemleri izin kontrolöre teslim edildikten sonra nasıl bu kontrol edebilir mi?

[Update] Ok changing the angle of my question, how can I use the Form helper to create forms that are not based on any Model?

1 Cevap

Sen (CakePHP 1.2) PoundCake Control Panel kontrol etmek isteyebilirsiniz - ekran görüntülerine bir göz atın. İstediğiniz işlevi orada mevcut olduğunu ancak radyo girişler yerine onay kutuları kullanılır. Kullanıcılar ve Gruplar acos bağlantılıdır. Yani, değişen Kullanıcılar veya Gruplar ağaç yapısı acos ağaç yapısını değiştirmek. Menü öğeleri AROS bağlantılıdır. Yani, menülerin ağaç yapısını değiştirerek size AROS ağaç yapısını değiştirmek.

Örneğin, groups_controller.php,

public function permissions($id = null){
    $this->_checkIdPresence($id);
    if(!empty($this->data)){
        $aroNode = array('model' => 'Group', 'foreign_key' => $this->data['Group']['id']);
        foreach($this->data['Acos'] as $aco){
            if(!empty($aco['permission'])){
                $do = '';
                if($aco['permission'] == '1'){
                    $do = 'allow';
                }elseif($aco['permission'] == '-1'){
                    $do = 'deny';
                }
                $acoNode = array('model' => $aco['model'], 'foreign_key' => $aco['foreign_key']);
                if($this->Acl->{$do}($aroNode, $acoNode, '*')){
                    $message = sprintf(__('<i>%s</i> permission to <i>%s</i> has been saved.', true),ucfirst($do), $aco['name']);
                    $this->_flash($message, 'success');
                }else{
                    $message = sprintf(
                        __('<i>%s</i> permission to <i>%s</i> could not be saved. Please, try again.', true),
                        ucfirst($do), $aco['name']
                    );
                    $this->_flash($message, 'error');
                }
            }
        }
    }
    // Get ARO for the current Group and all related ACOs from the db
    $this->data = $this->Group->read(null, $id);
    $acosTree = $this->ControlPanel->checkPermissions($id);
    $existingPermissions = $this->ControlPanel->findRecordedPermissions($id);
    $this->set(compact('acosTree', 'existingPermissions'));
}