2016-09-23 112 views
1

我堅持從app \ Helpers \ Enums \ DriverType.php獲取值。Laravel 5.3獲取數組值

這裏是我的代碼:

<?php 

namespace App\Helpers\Enums; 

final class Gender { 
const MALE = 0; 
const FEMALE = 1; 
public static function getList() { 
    return [ 
     Gender::MALE, 
     Gender::FEMALE, 
    ]; 
} 

public static function getArray() { 
    $result = []; 
    foreach (self::getList() as $arr) { 
     $result[$arr] = self::getString($arr); 
    } 
    return $result; 
} 

public static function getString($val) { 
    switch ($val) { 
     case 0: 
      return "Male"; 
     case 1: 
      return "Female"; 
    } 
} 

} 

?> 

我的問題是我怎麼能得到我的司機\ create.blade從數組中值。 我試過了。

這裏是我的刀片代碼:

{!! Form::model($obj, 
[ 'url' => $route, 
'method' => $method, 
'id' => 'driverCreate', 
]) !!} 
<div class="col-xs-12 col-sm-12 col-md-12"> 
<div class="form-group"> 
<strong>Gender:</strong> 
{!! Form::select('gender', array('Male', 'Female'), null, array('class' =>  'form-control')) !!} 
</div> 
</div> 
<div class="col-xs-12 col-sm-12 col-md-12 text-center"> 
<button type="submit" class="btn btn-primary" >Submit</button> 
{!! Form::close() !!} 
</div> 

要弄清楚它是如何工作所需的任何代碼?

+0

您可以粘貼您的刀片文件代碼。您始終可以在您的項目中靜態調用該方法。 – anwerj

+0

@anwerjunaid好的。 –

+0

@anwerjunaid有代碼。 –

回答

0

有多種選項可以共享變量來查看文件。

第一招:
從控制器,你可以通過可變

$genders = App\Helpers\Enums\Gender::getArray(); 
return view('view_name', compact($genders)); 

在你刀片文件只需要使用$性別

{!! Form::select('gender', $genders, null, array('class' => 'form-control')) !!} 

調用類的一樣,直接

{!! Form::select('gender',App\Helpers\Enums\Gender::getArray(); , null, array('class' => 'form-control')) !!} 

第三個也許是最有用的
您可以共享性別與所有的意見,你可能會需要他們以後。 在你提供的文件(AppServiceProvider建議)添加這些行

namespace App\Providers; 

use Illuminate\Support\Facades\View; 

class AppServiceProvider extends ServiceProvider 
    { 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     $genders = App\Helpers\Enums\Gender::getArray(); 
     View::share('genders', $genders); 
    } 

    /** 
    * Register the service provider. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 

$gender變量將在所有視圖中使用。

View Composer的 Laravel建議此過程中,我還沒有使用它,你可以讀到它Here

最終你會得到選擇值爲0或1,它是你的選擇,你可以獲取枚舉值

$gender = Input::get('gender'); 
$genderEnum = App\Helpers\Enums\Gender::getArray()[$gender]; 
// or write another method for. 
+0

非常感謝你,但爲什麼我不能使用$性別,它說undi變量。但它直接使用調用類。 –

+0

這些是基於函數的包含文件,它們是以這種方式設計的。你必須聲明變量以使它們在視圖中可訪問。 – anwerj

+0

明白了,謝謝。 –