在 Laravel 模型中创建自定义 variables/attributes
Creating custom variables/attributes in Laravel Model
我正在尝试在 Laravel 模型中创建自定义属性。该属性对于所有模型实例都是相同的(静态的?)。目标是在创建模型实例时使用此属性填充 select 下拉列表。示例:
class User extends Model
{
protected $table = 'users';
protected $guarded = [ 'id' ];
public $timestamps = true;
protected $genders = ['male'=>'Male', 'female'=>'Female']; //custom
public static function getGenderOptions() {
return $genders;
}
}
然后在构建表单时,我可以做类似的事情:
// UserController.php
$data['select_options'] = User::getGenderOptions();
return view('user.create', $data);
// create.blade.php
{!! Form::select( 'gender', $select_options ) !!}
这导致我得到错误:
Undefined variable: genders
我试图防止所有 select 选项使我的控制器混乱,因为还有一些我没有包括在内。
谢谢。
修改您的 protected $genders
元素并使其成为 public+static。那么你可以像这样直接访问它:User::$genders
.
但是...我个人的决定是将常量移动到配置文件或某种帮助程序。
我猜应该是
public function getGenderOptions() {
return $this->genders;
}
或者简单地将$genders
声明为静态变量并使用return self::$genders
查看文档 - Variable scope and Static Keyword
我正在尝试在 Laravel 模型中创建自定义属性。该属性对于所有模型实例都是相同的(静态的?)。目标是在创建模型实例时使用此属性填充 select 下拉列表。示例:
class User extends Model
{
protected $table = 'users';
protected $guarded = [ 'id' ];
public $timestamps = true;
protected $genders = ['male'=>'Male', 'female'=>'Female']; //custom
public static function getGenderOptions() {
return $genders;
}
}
然后在构建表单时,我可以做类似的事情:
// UserController.php
$data['select_options'] = User::getGenderOptions();
return view('user.create', $data);
// create.blade.php
{!! Form::select( 'gender', $select_options ) !!}
这导致我得到错误:
Undefined variable: genders
我试图防止所有 select 选项使我的控制器混乱,因为还有一些我没有包括在内。
谢谢。
修改您的 protected $genders
元素并使其成为 public+static。那么你可以像这样直接访问它:User::$genders
.
但是...我个人的决定是将常量移动到配置文件或某种帮助程序。
我猜应该是
public function getGenderOptions() {
return $this->genders;
}
或者简单地将$genders
声明为静态变量并使用return self::$genders
查看文档 - Variable scope and Static Keyword