Ben index
yöntemi onları ve view
yöntem parametre olarak tasarımcı adını kabul eder ve ismiyle alır listeler DesignersController
adlı bir denetleyicisi var.
bu yüzden /designers
tüm tasarımcıları listeler ve /designers/view/designer-name
bu tasarımcı gösterecektir.
Bir tasarımcı adını bir boşluk var Şimdi, eğer URL öncelenmesi gerekir. Ben boşluk kaçan ve atlanmaması için mantığı var:
private $space_escape_char = '-';
function escapeSpaces($str)
{
return str_replace(" ",$this->space_escape_char,$str);
}
function unescapeSpaces($str)
{
return str_replace($this->space_escape_char," ",$str);
}
O "Foo Bar" içine çevirebilir "Foo-Bar" gibi bir isim iletildiğinde Şimdi Controller
üzerinde view
yöntemi, bu nedenle erişimi gerekiyor.
Index.ctp görünümü dosyası da buna erişim ihtiyacı, bu yüzden tüm tasarımcılar listeler zaman her biri için linkler vermek ve her isim kaçmak mümkün olabilir:
<?php foreach ($designers as $designer): ?>
<div>
<?php
echo $this->Html->link(
$designer['Designer']['name'],
array(
'controller' => 'designers',
'action' => 'view',
escapeSpaces($designer['Designer']['name'])
)
);
?>
</div>
<?php endforeach; ?>
Kod çoğaltılması olmadan bu işlemek için en iyi yolu nedir?