使用Laravel,我如何将include作为另一个include的参数传递?

时间:2015-06-06 02:44:11

标签: php laravel laravel-4 blade

我使用的是Laravel 4.2,我的页面上有多个引导程序框。我想将这些文件放在一个我可以包含的文件中,并附上一些插入其中的参数,因此我不需要每次都为这些框重复相同的代码。

控制器

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:orientation="vertical" >
    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#EFE3AF"
    android:orientation="vertical" >
     <FrameLayout 
     android:layout_width="fill_parent"
     android:layout_height="500dp"
     android:layout_weight="1"
            >

      <SurfaceView
         android:id="@+id/surfaceview"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:background="@null"
          android:scaleType="fitXY"
          />

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="top"
      android:gravity="right"
      android:orientation="vertical"
      android:paddingRight="@dimen/right01"
      android:paddingTop="@dimen/top02" >
      <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" 
        android:src="@drawable/village" />

      </LinearLayout>

        </FrameLayout>
    </LinearLayout>


  </RelativeLayout>

box.blade.php (包含文件)

$box_options = array(
    'icon_classes' => 'fa fa-pie-chart',
    'box_title' => 'Browser Usage',
    'box_footer_text' => 'View More Visitor Data'
  );

return View::make('index')->with('box_options', $box_options);

我需要盒体的内容是动态的,因此它可以是字符串或其他包含文件或两者的组合。如果它只是一个字符串,我可以轻松地将其与控制器一起传递给其他变量,但我需要它能够在那里放置一个包含文件,除了它可以包含许多不同的包含文件

如何将include作为另一个include的参数传递?或者还有另一种完全不同的做法,我还没考虑过吗?

2 个答案:

答案 0 :(得分:1)

@include()类似于php include "";,因此变量的范围不会发生变化,您可以在box.blade.php中访问includes.global.pie_chart的变量而不通过它。 因为范围没有变化,你可以这样做:

return view('box', "browser_usage_pie_chart_options" => $browser_usage_pie_chart_options):

在您的视图 box.blade.php 中:

@include('includes.global.pie_chart')

并在 includes.global.pie_chart 中将其命名为:

{{ $browser_usage_pie_chart_options }}

我建议如果你的包含被多次使用,有时变量不存在,在打印之前检查它是否存在@if(isset($browser_usage_pie_chart_options))

答案 1 :(得分:0)

像这样

@include("part.dateTemplate",["name" => "pr_date"])
 
// dateTemplate
  {{ $name }} // pr_date