pa-de-solminihac / clementine-framework-module-crud

0 stars 2 forks source link

améliorer la documentation #6

Open pa-de-solminihac opened 9 years ago

pa-de-solminihac commented 9 years ago

Notamment les points suivants :

Expliquer également comment on personnalise l'affichage :

$this->mapFieldName('table.champ', 'Mon <em>beau</em>nom');
$this->hideField('table.champ');
$this->moveField('table.champ', 'table.champ_avant_lequel_insérer');
$resize_picture = array(
    'canevaswidth' => 640,
    'canevasheight' => 480,
    'cropwidth' => 640,
    'cropheight' => 480,
    'interieur' => 1
);
$resize_thumbnail = array(
    'canevaswidth' => 192,
    'canevasheight' => 168,
    'cropwidth' => 192,
    'cropheight' => 168,
    'interieur' => 1
);
$parameters = array(
    'max_filesize' => 10000000,
    'dest_dir' => __FILES_ROOT__ . '/files/media',
    'extensions' => array('jpg', 'jpeg', 'gif', 'png'),
    'resize_args' => $resize_picture,
    'thumbnails' => array(),
);
$parameters['thumbnails'][] = array(
    'resize_args' => $resize_thumbnail,
);
$this->overrideField('table.field', array(
    'type' => 'file'
), $parameters);
// un simple champ vide
$this->addField('table.fake_field');
// un champ calculé avec définition SQL
$this->addField('table.calculated_field', null, array(
    'sql_definition' => 'CONCAT(IF(...))'
));
$this->hideSection('xlsbutton');
if (!$request->AJAX) {
    $this->getBlock('design/header-admin', $data, $request);
}
$this->getParentBlock($data, $request);
if (!$request->AJAX) {
    $this->getBlock('design/footer-admin', $data, $request);
}
$this->getModel('users')->needPrivilèges('nom_du_privilege');
pa-de-solminihac commented 9 years ago

Il faudra parler aussi des raccourcis :

pa-de-solminihac commented 9 years ago

À voir aussi :

pa-de-solminihac commented 9 years ago

À voir aussi :

public function validate($insecure_values, $insecure_primary_key = null)
{
    $previous_errors = parent::validate($insecure_values, $insecure_primary_key);
    $my_errors = array();
    if ($insecure_values['table-field'] < 5) {
        $my_errors['table-field'] = 'le champ table-field doit être supérieur ou égal à 5';
    }
    return $this->getModel('fonctions')->array_replace_recursive($my_errors, $previous_errors);
}

_À détailer pour la gestion d'erreurs avec handle_errors..._

pa-de-solminihac commented 9 years ago

À voir aussi :

$this->renameOptions(array(
    'table.champ1' => 'Mon champ 1',
    'table.champ2' => 'Mon champ 2',
));
$this->setFieldValues(array(
    '1' => 'Nom 1',
    '2' => 'Nom 2',
    '3' => 'Nom 3',
));

Remarque : setFieldValues forcera l'affichage sous forme d'un select. On pourra aussi le passer en bouton radio :

$this->overrideField('table.field', 'radio');
pa-de-solminihac commented 9 years ago

Je viens de publier la version 4.18 de CRUD qui est à jour avec les éléments cités ci-dessus.

Avec aussi :

Evolutions HTML5 :

Ajout de wrappers pour faciliter l'utilisation générale

pa-de-solminihac commented 9 years ago

Comment choisir le type de liens générés par défaut (sur le listing par exemple) :

public function alter_values_index($params = null)
{
    $ret = parent::alter_values_index($params);
    $this->setFormLinks('read'); // générer des liens vers les pages crud/read
    return $ret;
}

On peut également surcharger les liens :

pa-de-solminihac commented 9 years ago

Propager des paramètres supplémentaires dans les liens générés par CRUD (pour mieux intégrer CRUD dans un site) :

    // injection systématique (dans tous les liens générés par CRUD) du paramètre 'app' récupéré en GET
    public function set_options($request = null, $params = null)
    {
        $ret = parent::set_options($request, $params);
        $this->setOption('url_parameters', array(
            'app' => $request->get('string', 'app'),
        ));
        return $ret;
    }
pa-de-solminihac commented 9 years ago

Ajouter des classes CSS aux formulaires générés par CRUD (pour skin bootstrap ou autres), par exemple sur les formulaires de création/modification.

    public function alter_values_create_or_update($params = null)
    {
        $ret = parent::alter_values_create_or_update($params);
        $this->data['more_classes_delbutton'] = array_merge_recursive($this->data['more_classes_wrap'], array(
            'well'
        ));
        return $ret;
    }
$data['more_classes_wrap'] = array_merge_recursive($data['more_classes_wrap'], array(
    'well',
));

Remarque

On peut aussi renommer les boutons de la même manière (button_label_*)

Surcharges possibles

La liste des surcharges possibles dans le fichier crudCrudController.php est :

    public function alter_values_index($params = null)
    {
        // pour injecter des classes CSS supplementaires, compléter ces tableaux dans une surcharge avec array_merge
        $this->data['more_classes_wrap'] = array();
        $this->data['more_classes_table'] = array();
        $this->data['more_classes_xlsbutton'] = array();
        $this->data['more_classes_createbutton'] = array();
        $this->data['button_label_create'] = 'Nouveau';
        $this->data['button_label_xls'] = 'Exporter';
    }

    public function alter_values_create_or_update($params = null)
    {
        $this->data['more_classes_wrap'] = array();
        $this->data['more_classes_form'] = array();
        $this->data['more_classes_field_wrap'] = array();
        $this->data['more_classes_field_key'] = array();
        $this->data['more_classes_field_val'] = array();
        $this->data['more_classes_field_comment'] = array();
        $this->data['more_classes_field_checkbox'] = array();
        $this->data['more_classes_backbutton'] = array();
        $this->data['more_classes_savebutton'] = array();
        $this->data['more_classes_delbutton'] = array();
        $this->data['button_label_back'] = 'Annuler';
        $this->data['button_label_save'] = 'Enregistrer';
        $this->data['button_label_del'] = 'Supprimer';
    }

    public function alter_values_read($params = null)
    {
        $this->data['more_classes_wrap'] = array();
        $this->data['more_classes_field_wrap'] = array();
        $this->data['more_classes_field_key'] = array();
        $this->data['more_classes_field_val'] = array();
        $this->data['more_classes_img'] = array();
    }
pa-de-solminihac commented 9 years ago

Parler des nouveautés de CRUD 5, notamment :

Responsive design

.clementine_crud-list_table_col_clementine_TABLE-FIELD {
    width: 120px !important
}

Header et footer

Personnalisation des formulaires générés

Personnalisation des liens

'url_retour_parameters' dans l'url_retour (par exemple pour récupérer l'id de l'enregistrement qu'on vient de créer)

Mappings

Hooks