2014-12-12 4 views
0

내 Laravel (블레이드)보기에서 버튼을 인쇄하고 싶습니다. 뷰를로드하는 사용자에게이 단추를 볼 수있는 권한이 없으면 단추가 표시되지 않습니다. (아직이 부분을 만들지 않았습니다.)이 단추를 만들기위한 함수를 만들었습니다. 무언가를위한 단추가 필요한 모든보기에서이 메서드를 사용하려고합니다. 메소드의 반환 값은 다음과 같습니다 문자열을 반환 createButton() 방법 :Laravel : 문자열의 URL

<a href="{{ URL::to(scholen/toevoegen) }}"><button class="btn btn-primary">Nieuwe school</button></a> 

단지 문제가 있습니다. 따라서 {{ URL::to('scholen/toevoegen') }}은 블레이드에서 작동하지 않습니다.

해결 방법은 있습니까? 내 메서드에 URL을 입력하고 싶지 않습니다. 가변적이어야하기 때문입니다.

보기

<?= Authorize::createButton('Nieuwe school', array('scholen', 'toevoegen'), null, 'btn btn-primary'); ?> 

차라리 블레이드에서보다는 createButton() 방법 내에서 경로 변수를 평가 제안

static function createButton($text = null, $route = null, $id = null, $class = null) 
{ 

     $button = '<a href="{{ URL::to(<!URL!>) }}"><button class="<!CLASS!>"><!TEXT!></button></a>'; 

     if ($text != null) { 
      $button = str_replace("<!TEXT!>", $text, $button); 
     } 

     if ($route[0] != null && $route[1] != null) { 
      $button = str_replace("<!URL!>", $route[0] .'/'. $route[1] . ($id != null ? '/'. $id : ''), $button); 
     } 

     if ($class != null) { 
      $button = str_replace("<!CLASS!>", $class, $button); 
     } 

     return $button; 
} 

답변

1

도우미 클래스 -이 같은 :

$button = '<a href="' . URL::to($someConstructedRoute) . '"><button class="<!CLASS!>"><!TEXT!></button></a>'; 

이제 우리는 필요한 코드 위에 구성된 경로를 작성해야합니다.

그러나 나는 또한 예를 들어 귀하의 방법을 개선하기위한 상당한 여지가 있다고 생각합니다. sprintf(). 또한 경로가 실제로 비어 있어서는 안됩니다. 항상 실제 링크가 필요하기 때문입니다. 여기에 내가 어떻게 바꿀 수 있는지에 대한 예가있다. 그러나 그것은 단지 제안 일 뿐이다.

static function createButton($routeVars, $text = '', $id = null, $class = '') 
{ 
    $route = implode('/', $routeVars); 
    if ($id) $route .= '/' . $id; 
    $url = URL::to($route); 

    return sprintf('<a href="%s"><button class="%s">%s</button></a>', 
     $url, $class, $text 
    ); 
} 

null을 빈 문자열로 변경하면 해당 값을 그대로 포함 할 수 있습니다. 예를 들어 텍스트가 제공되지 않은 경우 버튼은 텍스트가없는 <a href="somelink"><button class="someclass"></button></a>처럼 보입니다.

사실, 나는 아마도 3 가지 경로 생성을 정적 방법으로 추출 할 것입니다.하지만 이는 약간 질식할 수도 있습니다.

희망이 도움이됩니다. :)

+0

대단히 감사합니다! 그것은 훌륭하게 작동합니다! – Marten