我正在尝试从视图中访问Yii中的相关模型信息,并且需要创建一个方法。我不确定该方法是应该进入控制器还是模型...
情景是: - 车站'有一个'商店 - 商店'属于'站('商店'表有'station_id'列)
在Station(station / view / 1)的详细视图中,我想查看这个特定Station有一个Store的天气,如果是,我想从该商店返回ID。
所以我的问题是:
1)我是否创建了一种方法来查找此信息并将其放入Controller或Model?
2)我应该向电台询问此信息还是商店?
3)我知道Controller是模型和视图之间的粘合剂,因此将此方法放在控制器中是有意义的。但是,在Yii中,通常的做法是在视图文件中包含以下内容:
CHtml::listData(Company::model()->findAll()
在我看来,视图直接与模型进行交互
答案 0 :(得分:1)
如果使用Active Record,您可以在模型中设置关系函数中Station和Store模型之间的关系。然后可以使用一行短代码获得商店的ID(类似于$ storeId = $ model-> store-> id;)。因此,您可以轻松地将此代码放入控制器中,并使控制器保持精简状态(精益控制器,胖模型)。
您应该“询问”电台的电台,因为您已经知道电台的ID。
如果视图和模型之间不需要额外的逻辑,则可以跳过控制器。但不要忘记授权等事情。
答案 1 :(得分:0)
是的,
由于您使用的是活动记录关系,所以您只需要做
$station = Station::model()->findAll();
$station->store
现在您可以访问数据库中的商店对象,因此您可以
$station->store->id
$station->store->name
等等。
是的,Yii很棒:)但这只是ActiveRecord:)
通常的做法是直接从视图与控制器进行通信而不是模型。控制器处理验证并在模型正确后将其传递给模型。