2017-07-13 27 views
1

我試圖弄清楚這一點,因爲我嘗試過不同的方法,它似乎沒有工作我。如何檢查變量是否在@foreach循環中使用時定義的

我有一個foreach循環,像這樣:

@foreach($mods as $key => $value) 
       <tr class="table-tr draggable" data-id="{!!$value->id!!}" style="background-color: {{$value->mod_colour}}; color: {{$value->mod_text_colour}};"> 
        <!-- This creates the Mod --> 
        <td class="startTime"></td> 
        <td class="endTime"></td> 
        <td class="duration">{{ $value->mod_duration }}</td> 
        <td class="intent">{{ $value->mod_intent }}</td> 
        <td class="module"> 
         @if ($value->mod_module != null) 
          {{ $value->mod_module }} 
         @else 
          <table class="table-bordered" style="width:100%; text-align: center; color: white;"> 
           @for ($i = 1; $i <= $value->mod_team; $i++) 
            <td style="padding:10px;">Team {{ $i }}</td> 
           @endfor 
          </table> 
         @endif 
        </td> 
        <td class="output">{{ $value->mod_output }}</td> 
        <td class="input">{{ $value->mod_input }}</td> 
        <td class="logistics">{{ $value->mod_logistics }}</td> 
        <td> 
         <a class="btn btn-small btn-info" style="margin:auto; margin-top: 10px; margin-bottom: 10px; margin-left:10px; margin-right:10px; display:block;" href="" data-target="#modal-edit-mod{{ $value->id }}" data-toggle="modal" id="modal-edit">Edit</a> 
        </td> 
       </tr> 
@endforeach 

的問題,我要面對的是,當有數據庫中沒有MODS的,因此沒有什麼被傳遞到$價值變量,該頁面將拋出'未定義變量:值'錯誤。我想要實現的是創建某種catch語句,如果未定義該值,則默認爲「創建新Mod」屏幕或模態。我試過以下內容:

@foreach($mods as $key => $value) 
       @if($value != null) 
       <tr class="table-tr draggable" data-id="{!!$value->id!!}" style="background-color: {{$value->mod_colour}}; color: {{$value->mod_text_colour}};"> 
        <!-- This creates the Mod --> 
        <td class="startTime"></td> 
        <td class="endTime"></td> 
        <td class="duration">{{ $value->mod_duration }}</td> 
        <td class="intent">{{ $value->mod_intent }}</td> 
        <td class="module"> 
         @if ($value->mod_module != null) 
          {{ $value->mod_module }} 
         @else 
          <table class="table-bordered" style="width:100%; text-align: center; color: white;"> 
           @for ($i = 1; $i <= $value->mod_team; $i++) 
            <td style="padding:10px;">Team {{ $i }}</td> 
           @endfor 
          </table> 
         @endif 
        </td> 
        <td class="output">{{ $value->mod_output }}</td> 
        <td class="input">{{ $value->mod_input }}</td> 
        <td class="logistics">{{ $value->mod_logistics }}</td> 
        <td> 
         <a class="btn btn-small btn-info" style="margin:auto; margin-top: 10px; margin-bottom: 10px; margin-left:10px; margin-right:10px; display:block;" href="" data-target="#modal-edit-mod{{ $value->id }}" data-toggle="modal" id="modal-edit">Edit</a> 
        </td> 
       </tr> 
       @else 
       <p>No mods!</p> 
       @endif 
      @endforeach 

它將檢查$ value變量是否爲null,並且不起作用。我也嘗試了 - > isEmpty()方法,但它仍然返回未定義的變量錯誤。

我想要的幫助是創建@ if/@ else語句的最佳方式,它可以檢查$ value變量是否有值,或者是否有更好的方法實現我想要做的事情。

謝謝!

+0

'isset()函數'和/或'空()'是前兩個東西浮現在腦海 –

+0

if(count($ mods)> 0){foreach(...){} else {echo「找不到數據」} –

+1

您似乎遇到了一個問題,使您的$ mods var不爲空,但也沒有格式化,因爲你會喜歡它。因爲如果$ mods真的是空的,它甚至不會成爲foreach。這很有可能是你應該處理的,而不是檢查值是否設置 – Sugar

回答

3

您可以使用isset()empty()

@foreach($mods as $key => $value) 
    @if(isset($value)) 

OR

@foreach($mods as $key => $value) 
    @if(!empty($value)) 
+0

Thx for接受並樂意幫助你。 @stntmnky – RJParikh

0

要檢查是否定義的變量是isset(),例如:

if(isset($value)){ 
    echo $value; 
} 
0

您應該使用isset($值),以檢查變量設置與否。

而且在這種情況下,你可以使用這兩種檢查變量設置,而不是空

if(isset($value)) && is empty($value)) 
{ 
    \\ Your Code 
} 
0

爲了使它更清楚,有關變量的問題被定義或不與變量不同的是空或不,也有不同的方式來檢查它。

這裏我給你舉個小例子。

// create variable empty and fill it with null/''/0 

$empty = null; // I set it with null 

// And we create another variable notEmpty 
$notEmpty = 'Not Empty'; 

if(empty($empty)) { 
    echo "Empty"; // It will echo Empty if we run it 
} 

if(empty($notEmpty)) { 
    echo "Empty"; // Not called 
} else { 
    echo "Not Empty"; // Called 
} 

// Now checking if variable is defined or not 
if(isset($otherVar)) { 
    echo "Defined"; 
} else { 
    echo "is Not Defined"; 
} 

正如你可以看到從2方法:-D你的問題,你可以選擇

1

您可以使用isset()函數方法!

喜歡的東西:

if (isset($var)) {} 

如果是$ var設置,方法返回true,如果不是,返回false。

祝你好運!

0

你可以在laravel中做到這一點。ID檢查您的$ MODS的結果,看看什麼是它,然後執行,如果需要的話:

@if(is_null($mods)) 
    //its null, do this code 
@else 
your current code if a var is found 
@endif 
相關問題