Hello,

Ci-dessous mes avancements sur le sujet twig. A l'ordre du jour :

Concernant la lib : j'ai bossé sur la v1.6.3, il faudrait voir ce
qu'il faut adapter pour la v1.11.1 toute fraîche. Elle est positionnée
dans inc/lib/twig
Coté admin, Twig tout seul ne suffit pas/ne résoudra pas forcément
tous nos problèmes. J'ai lorgné du coté de symphony pour regarder
comment ils faisaient, j'ai donc commencé une lib
inc/admin/class.dc.form.php.

Concrètement, cela ajoute des fonctions twig particulières de type form_field.

Une entrée template rendu pour un formulaire de l'admin se résume alors à :
{% form post %}
    <p>{{ form_field('cat_id')}}</p>
    <p>{{ form_field('post_status')}}</p>
    <p>{{ form_field('post_dt')}}</p>
    <p>{{ form_field('post_format')}}</p>
    <p>{{ form_field('post_open_comment')}}</p>
    <p>{{ form_field('post_open_tb')}}</p>
    <p>{{ form_field('post_selected')}}</p>
    <p>{{ form_field('post_lang')}}</p>
{% endform %}

Coté code php, on pousse les champs correspondants via le contexte
qu'on transmet au template :
$form = new dcForm($core,'post','post.php');
$form
    ->addField(
        new dcFieldHidden('post_id',''))
    ->addField(
        new dcFieldText('post_title','', array(
            'size'        => 20,
            'required'    => true,
            'label'        => __('Title'))))
    ->addField(
        new dcFieldTextArea('post_excerpt','', array(
            'cols'        => 50,
            'rows'        => 5,
            'label'        => __("Excerpt:"))))
    ->addField(
        new dcFieldTextArea('post_content','', array(
            'required'    => true,
            'label'        => __("Content:"))))
    ->addField(
        new dcFieldTextArea('post_notes','', array(
            'label'        => __("Notes"))));


Le rendu est fait de cette forme :

$page = new dcAdminPage($core);
$ctx = $page->getContext();
$ctx
    ->jsDatePicker()
    ->jsToolBar()
    ->jsModal()
    ->jsMetaEditor()
    ->jsLoad('js/_post.js')
    ->jsPageTabs($default_tab)
    ->jsConfirmClose('entry-form','comment-form');

echo $page->render('post.html.twig',array(
    'edit_size'=> $core->auth->getOption('edit_size')));


A force d'écrire, je me dis qu'il vaudrait mieux que je pushe le code
quelque part. Je crée une branche à quel endroit ?

Je devrais pouvoir faire quelque chose qui affiche des trucs
rapidement, sachant qu'il restera du boulot :)

--
Bruno
_______________________________________________
Dev mailing list
[email protected]
http://ml.dotclear.org/listinfo/dev

Répondre à