2016-11-26 2 views
0

Можно ли использовать функции лезвия @if в функциях контроллера. Это моя функция PublicControllerЛезвие, если условие в функции контроллера

public function tourBanner($country){ 

    @if($country == 'country1') 
     background-image:url({{ asset('images/inside8.jpg') }});       
    @elseif ($country == 'country2')   
      background-image:url({{ asset('images/inside7.jpg') }}); 

    @elseif ($country == 'country3')   
      background-image:url({{ asset('images/inside5.jpg') }}); 

    @elseif ($country == 'country4')   
      background-image:url({{ asset('images/inside6.jpg') }});    
    @else   
      background-image:url({{ asset('images/inside10.jpg') }});   
    @endif 

    return banner; 
} 

И я получаю эту ошибку

Parse error: syntax error, unexpected 'if' (T_IF) 

Какую ошибку я сделал или мы не можем использовать лезвие, если если заявления в контроллере?

+0

ошибку вы сделали это с помощью синтаксиса лезвия в обычном PHP файле. Используйте синтаксис PHP. –

+0

@zachary, вы можете использовать '@ if' в своем лезвии, а не в контроллере. вы проверяли ответ @ devmyb? – Sachith

ответ

0

В контроллере вы должны написать так:

if ($country == 'country1') { 
    $a = 'background-image:url('.asset('images/inside8.jpg').')'; 
} elseif .... 

Но если вы собираетесь строить HTML/CSS/JS с PHP, это ужасная идея, не делают этого.

1

Синтаксис Blade @if предназначен для использования в виде лезвий не в файлы php (как в ваших контроллерах корпуса). Синтаксис Blade следует использовать в файлах, заканчивающихся расширением - filename. blade.php, а в вашем контроллере используйте обычный синтаксис PHP для оператора if.

Пожалуйста, см Blade Docs

class Controller { 
    function a() { 
     if($country == 'country1') { 
      $asset_str = asset('images/inside8.jpg'); 
      $banner = "background-image:url({$asset_str})"; 
     } 
     .... 
     return $banner; 
    } 
} 

Надеется, что это помогает!

0

Пожалуйста, попробуйте корпус переключателя для вышеуказанного состояния.

switch ($country) { 
    case "country1": 
     echo "background-image:url({{ asset('images/inside8.jpg') }})"; 
     break; 
} 

Он вернет точно такие же результаты.

0

Вы можете создать стиль в своем контроллере, а затем передать полученные данные на ваш взгляд с этого контроллера и затем визуализировать его. Этот фрагмент кода может дать вам немного понять:

<?php 

    public function tourBanner($country){ 
     $extraData = ['zero', 'one', 'two']; 

     switch($country){ 
      case 'country1': 
       $bgImage = 'images/inside8.jpg'; 
       break; 
      case 'country2': 
       $bgImage = 'images/inside7.jpg'; 
       break; 
      case 'country3': 
       $bgImage = 'images/inside5.jpg'; 
       break; 
      case 'country4': 
       $bgImage = 'images/inside6.jpg'; 
       break; 
      default: 
       $bgImage = 'images/inside10.jpg'; 
       break; 
     } 

     return view("your.blade.view", array(
      "bgImage" => $bgImage, 
      'extraData' => $extraData, 
     )); 
    } 

Тогда; в представлении, это было бы делом делать что-то вроде этого:

<div class="container" style="background-image:url({{ asset($bgImage) }})"> 
     <div class="col-md-12"> 
      Some Content... 
     </div> 
    </div> 
0

НЕТ, вы не можете. просто используйте условие по умолчанию if else в php.

1

Опечатки в вашем коде кода предназначены для файлов кликов, а не для ваших файлов PHP. Листинг проблем в коде

Удалить @ из кода

@if .... @elsif 

должен быть

if .... elseif 

лучше для нескольких if ... else вы можете использовать switch case

Вы возвращавшиеся banner, но это должно быть $banner, а также вы не назначали значение $banner переменная.Так что ваш код будет вроде как

if($country == 'country1') 
     $banner = "background-image:url(".asset('images/inside8.jpg') .")"; 
....... 

return $banner; 

лучше использовать switch case вроде как

switch($country) 
{ 
    case "country1": 
      $banner = "background-image:url(".asset('images/inside8.jpg') .")"; 
      break; 
    case .............. 
} 
0

клинка шаблон анализатор, который преобразует код в PHP за кулисами. Если вы хотите использовать какой-либо оператор if в своем контроллере, вы просто используете стандартный оператор IF.

if($q == $a) { 
    #more code here 
} else { 
    $other code here 
} 

Как было отмечено выше, рекомендуется с помощью переключателя заявление при использовании много другого заявления для вашего если

switch($q){ 
    case "yes": 
     return $something; 
    break; 
    case "no": 
     return $somethingelse; 
     break; 
    case "maybe": 
     return $whoknows; 
     break; 
} 
Смежные вопросы