Je suis en train de comprendre le développement d'applications web avec PHP et Smarty this is the bookSmarty pas clair
il y a un fichier departments_list.tpl
{* departments_list.tpl *}
{load_presentation_object filename="departments_list" assign="obj"}
{* Start departments list *}
<div class="box">
<p class="box-title">Choose a Department</p>
<ul>
{* Loop through the list of departments *}
{section name=i loop=$obj->mDepartments}
{assign var=selected value=""}
{* Verify if the department is selected to decide what CSS style to use *}
{if ($obj->mSelectedDepartment == $obj->mDepartments[i].department_id)}
{assign var=selected value="class=\"selected\""}
{/if}
<li>
{* Generate a link for a new department in the list *}
<a {$selected} href="{$obj->mDepartments[i].link_to_department}">
{$obj->mDepartments[i].name}
</a>
</li>
{/section}
</ul>
</div>
{* End departments list *}
Je ne comprends pas dans le fichier ci-dessus d'une ligne qui est
{section name=i loop=$obj->mDepartments}
comment fonctionne name=i
fonctionne I ce qui est j'initialisés à et comment un départ de la boucle de i,
en second fichier ci-dessus utilise un fichier function.load_presentation_object.php
<?php
// Plug-in functions inside plug-in files must be named: smarty_type_name
function smarty_function_load_presentation_object($params, $smarty)
{
require_once PRESENTATION_DIR . $params['filename'] . '.php';
$className = str_replace(' ', '',ucfirst(str_replace('_', ' ',$params['filename'])));
// Create presentation object
$obj = new $className();
if (method_exists($obj, 'init'))
{
$obj->init();
}
// Assign template variable
$smarty->assign($params['assign'], $obj);
}
?>
dans le fichier ci-dessus un paramètre $ params a été utilisé dans la dernière ligne
$smarty->assign($params['assign'], $obj);
pour autant que je peux comprendre à partir du fichier departments_list.tpl passe sur le paramètre à function.load_presentation_object.php comme
{load_presentation_object filename="departments_list" assign="obj"}
donc lorsque le suivi est appelé
function smarty_function_load_presentation_object($params, $smarty)
$ params = depratments_list et smarty $ = obj
Alors, comment $ smarty-> assign ($ params [ 'assign'], $ obj);
que fait $ params ['affecter'] ci-dessus?
Merci pour l'explication '{section name = I' je n'ai pas donné i = 0 et plus au-dessus est le nom de la section si j'ai bien compris ici http://www.smarty.net/docsv2/fr/language.function.section.tpl ou est-ce une convention que quel nom jamais pointera dans ce cas le nom = i alors je dois commencer par 0 –
Désolé pour une explication trompeuse - 'i' est le nom de la section, pas une valeur entière dans smarty. 'i' (notez que ceci est utilisé sans' $ ') pointera la section nommée et retournera l'index actuel. Si vous voulez partir d'un index autre que 0, utilisez 'start = 2' comme paramètre de section. –
ok merci pour l'info –