繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM