2013-09-01 1 views
2

내 Symfony2 프로젝트에서 슬러그 (sluggable) 동작을 사용하고 있지만 지금은 다른 텍스트 (현재 제목, 이전 제목, 양식 입력의 사용자 텍스트)를 기반으로 한 페이지에 많은 슬러그를 만들고 싶습니다.), 다른 테이블에 보관하십시오. 그리고 내 질문은 - 수동으로 교리 확장을 모든 텍스트에 사용하는 방법입니까? 나는 그것을 어디에서도 발견 할 수 없다.수동으로 독트럭 슬러그 생성하기

/* careful - it's not a real, working code! */ 
$sluggable = new DoctrineSluggable(); 
$slug = $sluggable->generate('My own text!'); 
echo $slug; // my-own-text 

답변

1

여기 슬러그를 생성 교리 코드를 찾기 : 완벽한 뭔가 같은 것 l3pp4rd/DoctrineExtensions. 그 클래스를 가지고 놀면 원하는대로 할 수 있지만, 원하는대로 쉽게 사용하기 위해 자신 만의 서비스를 만들 필요가 있습니다. 서비스에 대한 자세한 내용은 문서의 Service Container 섹션을 참조하십시오.

+1

답장을 보내 주셔서 감사합니다. 글쎄, 원래의 플러시 가능한 코드는 복잡하고 플러시 엔티티에서 잘 작동하지만 나에게는 텍스트에서 슬러그를 생성하기 위해 혼자 사용하기가 너무 어렵다. 하지만 [KNP 번들] (https://github.com/KnpLabs/DoctrineBehaviors/blob/master/src/Knp/DoctrineBehaviors/Model/Sluggable/Sluggable.php#L84)에서 멋진 코드를 발견했습니다. preg_replace와 라인, 나를 위해 충분히 작동합니다. – Radzikowski

12

나는 우연히 해결책을 찾았습니다. here. 코드 :

use Gedmo\Sluggable\Util as Sluggable;  

$string = 'My own text!'; 
$slug = Sluggable\Urlizer::urlize($string, '-'); 
    if(empty($slug)) // if $string is like '=))' or 'トライアングル・サービス' an empty slug will be returned, that causes troubles and throws no exception 
     echo 'error, empty slug!!!'; 
    else 
     echo $slug;