2015-05-08 4 views
0

В моем приложении Laravel я хочу отображать разные фон в каждой ячейке таблицы.Функция Laravel Blade

Представьте

<td> 
    switch($product->number) 
     @case('1') 
     "red" 
     @break; 
    [...] 
    @case('100') 
     "green" 
     @break; 
    @endswitch 
</td> 

Итак, как я должен делать это для каждой ячейки в строке, я задавался вопросом, как я мог просто вызвать функцию внутри вида, что бы вернуть цвет.

(Я знаю, что было бы быстрее сделать это на стороне клиента js, но мне просто интересно).

+1

«быстрее» с точки зрения реализации, возможно, не в рендеринге;) Я думаю, вам просто нужно повторить свой код для каждой ячейки или создать внешний цикл. Ваш код и ваше объяснение в это время слишком скудны, чтобы дать возможное решение. Я рекомендую вам уточнить еще кое-что. – Luceos

ответ

0

Как насчет написания помощника? Вы можете назвать его в лезвии как это:

{!!\App\Library\TableHelper::colorText($product->number)!!} 

И в помощнике, который я поставил под приложение/Library:

<?php namespace App\Library; 


class TableHelper 
{ 
    public static function colorText($text) 
    { 
     switch ($text) 
     { 
      case '1' : $text = '<span color="green"> ' . $text . '</span>'; break; 
      //... 
     } 
     return $text; 
    } 
    //to only get the color: 
    public static function getColor($text) 
    { 
     switch ($text) 
     { 
      case '1' : return 'green' ; break; 
      //... 
      default: return 'white'; 
     } 

    } 
} 
0

Сначала определим массив цвета и назначить для просмотра.

$colors = [1 => 'red', 2 => 'green', 3 => 'blue', 4 => 'gray']; 
return $this->view('template', ['colors' => $colors]); 

Тогда вы можете попасть в шаблон.

<td> 
    {{ array_get($colors, $product->number) }} 
</td> 

Я не знаю, задан ли цвет заранее или нет. Может быть, так вы и хотите.