Ben görüş ve denetleyicileri mantığı paylaşmak gerektiğini biliyorum .. ama bu başka nasıl yapabilirim?

0 Cevap php

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?

0 Cevap