为刀片文件中的变量赋值

Posted

技术标签:

【中文标题】为刀片文件中的变量赋值【英文标题】:assign a value to a variable in blade file 【发布时间】:2018-05-25 00:17:27 【问题描述】:

我想根据条件为 laravel 刀片文件中的变量赋值。

<?php $status=''; ?>
      @if($user_role=='2')
        <?php $status='1'; ?>
      
      @elseif($user_role=='3')
        <?php $status='2'; ?>
      
      @elseif($user_role=='4')
        <?php $status='3'; ?>
      

但是 status 什么都不返回。如何在 laravel 5.3 刀片文件中为变量赋值

【问题讨论】:

Laravel's Blade: how can I set variables in a template?的可能重复 最好在控制器而不是刀片(视图)中执行此逻辑 @ThomasMoors 可能是 OP 想根据条件显示一些文本! @HirenGohel SOC 先在控制器中执行逻辑并将数据传递给视图仍然会更好 也许 $user_role 不是 2、3 或 4 【参考方案1】:
@if($user_role=='2')
  @php $status='1'; @endphp
@endif

@if($user_role=='3')
  @php $status='2'; @endphp
@endif

@if($user_role=='4')
  @php $status='3'; @endphp
@endif

你可以通过添加 echo 来检查值

 @if($user_role=='4')
  @php echo $status='3'; @endphp
@endif

【讨论】:

【参考方案2】:

switch 语句会更好

@switch($user_role)
    @case(1)
        @php $status = 1;@endphp
        or <h1>Status is 1</h1>
        @break

    @case(2)
        Second case...
        @break

    @default
        Default case...
        @php $status = 5;@endphp
@endswitch

但你的大部分逻辑(如果不是全部)都应该在控制器中完成

https://laravel.com/docs/5.5/blade#switch-statements

如果您的 laravel 版本中没有 @switch 可用,您可以随时使用

@php
 switch($user_role) 
  case 1:
      $status = 1;
      break;
  case 2:
      $status = 2;
      break;
 default:
     $status = 5;

@endphp

【讨论】:

以上是关于为刀片文件中的变量赋值的主要内容,如果未能解决你的问题,请参考以下文章

无法为JavaScript中的对象变量赋值[重复]

批处理将文本中的变量名替换为变量值并删除定义赋值语句

shell环境变量与变量赋值

精通awk系列(14):细说awk中的变量和变量赋值

使用循环为列表中的变量赋值

bash中的变量