[英]cakePHP : combining 2 actions and loading all players and also one player that changes
在我的索引(/玩家)视图中,我有一个带有一群玩家图像的轮播。 当我单击图像时,我转到所单击播放器的查看屏幕(/ players / view / 1)。
现在,我只希望有一个带有该播放器图像轮播的索引屏幕,并且在单击图像后,我希望该播放器的信息位于同一索引屏幕上。
我如何最好地结合索引和视图,以便可以单击播放器图像并在同一页面上检索他的信息? 目标是在控制器中具有一个视图文件和一个动作。 那么如何将find('all')和find('first')放在一个动作中呢?
现在我有/ players和/ players / view / 1。 我想拥有例如/ players / 1,因此它会加载在同一页面上。 但是,这仍然会给我带来页面加载。
最终,我不希望页面加载,而只是内容更改。
PlayersController的索引动作(给我所有玩家):
public function index() {
$this->layout = 'default_front_players';
$this->Player->recursive = 0;
//$this->Player->find('all');
$this->set('players', $this->Paginator->paginate());
}
查看PlayersController的操作(为我提供被点击的玩家):
public function view($id = null) {
$this->layout = 'default_front_players';
if (!$this->Player->exists($id)) {
throw new NotFoundException(__('Invalid player'));
}
$options = array('conditions' => array('Player.' . $this->Player->primaryKey => $id));
$this->set('player', $this->Player->find('first', $options));
}
更新
第一种情况
这给了我所有玩家,也给了我一个玩家(atm玩家143,数据库中的最后一个),问题是当我单击一个玩家图像时,该玩家停留在玩家143上。URL更改为玩家/索引/ {点击的玩家数}
public function index($id = null) {
$this->layout = 'default_front_players';
$this->Player->recursive = 0;
$players = $this->Player->find('all');
$this->set(compact('players'));
$options = array('conditions' => array('Player.' . $this->Player->primaryKey => $id));
$player = $this->set('player', $this->Player->find('first', $options));
}
第二种情况
这不会显示播放器图像,但是当我更改URL时,它将为我提供播放器的内容,该ID是我在URL中提供的。
public function index($id = null) {
$this->layout = 'default_front_players';
$this->Player->recursive = 0;
//$players = $this->Player->find('all');
//$this->Paginator->settings = $this->paginator_players;
$this->set('players');
$options = array('conditions' => array('Player.' . $this->Player->primaryKey => $id));
$player = $this->set('player', $this->Player->find('first', $options));
}
如果我转到/ players或players / index,则不会获得任何值。
如何合并这两个?
您是否尝试过ajax和路由来实现内容刷新(本质上是创建对内部资源的api调用)? 我将cakephp用于自己的副项目,并且需要一种方法来规避整个控制器,查看加载机制以获得更快的UI体验。
要点是在模板或布局文件中包含jquery。 调用某个路由或URL时(这需要在app / config的相对于您应用的根文件夹中的route.php文件中设置一条路由),触发ajax调用以获取内容并动态更新dom,而无需重新加载页面。
这个建议可能为您打开了一个全新的蠕虫罐,但我认为可以实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.