cakePHP:组合2个动作并加载所有玩家和一个更改的玩家

cakePHP:组合2个动作并加载所有玩家和一个更改的玩家,php,cakephp,view,controller,action,Php,Cakephp,View,Controller,Action,在我的索引(/players)视图中,我有一个旋转木马,里面有一群玩家的图像。当我点击一个图像时,我会进入被点击的播放器的查看屏幕(/players/view/1) 现在我只想有一个索引屏幕,上面有一个旋转的玩家图像,在我点击一个图像后,我想在同一个索引屏幕上显示该玩家的信息 如何最好地将索引和视图结合起来,以便单击玩家图像并在同一页面上检索他的信息?目标是在控制器中有一个视图文件和一个操作。那么我如何将find('all')和find('first')放在一个动作中呢 现在我有/players

在我的索引(/players)视图中,我有一个旋转木马,里面有一群玩家的图像。当我点击一个图像时,我会进入被点击的播放器的查看屏幕(/players/view/1)

现在我只想有一个索引屏幕,上面有一个旋转的玩家图像,在我点击一个图像后,我想在同一个索引屏幕上显示该玩家的信息

如何最好地将索引和视图结合起来,以便单击玩家图像并在同一页面上检索他的信息?目标是在控制器中有一个视图文件和一个操作。那么我如何将find('all')和find('first')放在一个动作中呢

现在我有/players和/players/view/1。 我希望有例如/players/1这样它就可以加载到同一个页面上。然而,我认为这仍然会带来页面负载

最终我不想加载页面,只想更改内容

PlayerController的索引动作(给我所有玩家):

查看PlayerController的操作(提供已单击的播放器):

更新

第一例

这给了我所有的播放器,也给了我一个播放器(atm播放器143,数据库中的最后一个),问题是当我点击一个播放器图像时,播放器停留在播放器143上。url更改为players/index/{单击的播放器数}

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时,它会提供我在url中提供的播放器id的内容

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和routes来实现内容刷新(基本上是创建自己对内部资源的api调用)?我在自己的项目中使用cakephp,需要一种绕过整个控制器、视图加载机制的方法,以获得更快的UI体验

要点是在模板或布局文件中包含jquery。当调用某个路由或url时(这需要在app/config中的routes.php文件中从apps根文件夹相对地设置一个路由),启动ajax调用以获取内容并动态更新dom,而无需重新加载页面


这个建议可能会给你带来全新的麻烦,但我认为它是可以实现的。

“最佳方法”可能会带来基于意见的答案。你能说得更具体些吗?关于最佳实践的最佳方法?表演减少代码编写?谢谢,但首先我需要找到一种方法来组合索引和视图。
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));
}
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));
}