Sto provando a crearmi dei modificatori personalizzati per phptal, ma purtroppo la documentazione è un po' carente...
Ho buttato giù questo codice:
Codice PHP:
function phptal_tales_ucfirst ($src, $nothrow) {
$parsed = (array) phptal_tales($src, $nothrow);
$i = 1;
$return = "";
foreach ($parsed as $x) {
if ($i < count($parsed)) $return .= "!empty(" . $x . ") ? ucfirst(" . $x . ") : ";
else $return .= "ucfirst(" . $x . ")";
$i++;
}
return $return;
}
Funziona alla perfezione, solo che... s'inceppa con i valori di default
mi restituisce '')
Per curiosità allora ho provato togliendo gli "ucfirst":
Codice PHP:
function phptal_tales_ucfirst ($src, $nothrow) {
$parsed = (array) phptal_tales($src, $nothrow);
$i = 1;
$return = "";
foreach ($parsed as $x) {
if ($i < count($parsed)) $return .= "!empty(" . $x . ") ? " . $x . " : ";
else $return .= $x;
$i++;
}
return $return;
}
E funziona tutto (a parte il fatto che non rende maiuscola la prima lettera, ovviamente), anche i valori di default...
Sapete dirmi dov'è che sbaglio?
(Ah, se vi serve il codice del template è questo:
codice HTML:
<h1 tal:content="ucfirst: title | default">valore di default</h1>
e il risultato è questo:
Codice PHP:
<h1>
<?php
echo phptal_escape(!empty($ctx->path($ctx, 'title', true)) ? ucfirst($ctx->path($ctx, 'title', true)) : ucfirst(new PHPTAL_DefaultKeyword), 'UTF-8');
?>
</h1>
)