php - 无法在 laravel 访问器中获取属性(十月 CMS)
问题描述
我目前正在使用 October CMS 开展一个项目,并尝试将 taglist 与关系数据一起使用。而且我正在使用自定义访问器从两列中获取全名,这似乎是一个非常常见的情况。
但我只是无法在访问器中获取模型的属性。
这是我的代码...
class NameOfClass extends Model
{
/** ALL THE CODE GENERATED BY OCTOBER CMS PLUGIN BUILDER */
public function getFullNameAttribute()
{
return $this->firstname." ".$this->lastname;
}
}
并在文件中调用访问器field.yml
...
fieldName:
label: FieldName
descriptionFrom: description
type: taglist
mode: relation
nameFrom: full_name
customTags: false
我可以看到访问器被调用得很好,因为我可以通过将返回值更改为纯字符串来获取值。
我花了很多时间研究解决方案......有什么想法吗?
我正在使用官方 octobercms docker image 最新版本进行开发。
解决方案
由于内部代码,它不可能。所以我建议不要试图解决它。它无法解决:) 尝试替代
为什么 ??
因为 from code taglist 的设计方式使其可以与TAGS
. allow to create new tags
如果有no selected tag
标签,如果标签存在,它就会给定attache
记录。这一切都将与real attributes
.
所以它不是为使用虚拟属性而设计的。
有关更多详细信息,这是它生成标签的代码
public function getFieldOptions()
{
$options = $this->formField->options();
if (!$options && $this->mode === static::MODE_RELATION) {
$options = RelationBase::noConstraints(function () {
$query = $this->getRelationObject()->newQuery();
// Even though "no constraints" is applied, belongsToMany constrains the query
// by joining its pivot table. Remove all joins from the query.
$query->getQuery()->getQuery()->joins = [];
return $query->lists($this->nameFrom); // <==== LOOK HERE
});
}
return $options;
}
你可以看到这nameFrom
是直接传递给查询的,query/sql
这样not know about our virtual field
做是行不通的。
或者,您可以使用
RelationController Behaviors
参考:https ://octobercms.com/docs/backend/relations#introduction
如有任何疑问,请发表评论。
推荐阅读
- sql - Oracle SQL - 具有多个标头的条件聚合透视
- python-3.x - 弹出窗口出现在 Folium 中的鼠标悬停上
- ms-access - 条件格式顶部和底部百分比
- api - 部署到 IIS 8.5 服务器后,dotnet core web api DELETE call 404 错误
- python - 烧瓶 API 路由的单元测试
- php - php if 两个类别的条件
- javascript - 同一个JS文件的多个副本加载时间
- javascript - 发布 Json 字符串获取 NULL
- ruby-on-rails - 无法推送到 Heroku (Ruby 2.3.4)
- c# - 如何检查 URL 是否存在 XSS 风险并对其进行清理以使其不是