Вызов функции с точки зрения cakephp - PullRequest
3 голосов
/ 10 августа 2010

У меня есть один массив команд, и я хочу, чтобы это имя команды использовалось для отображения имени команды. Можно создать глобальную функцию, которая может возвращать имя команды, и я вызываю эту функцию из моего представления в виде файла ctp.

Ответы [ 4 ]

6 голосов
/ 23 октября 2012
please try this for west:

<?php
// controller name like app,users
// action name like getdata should be in controller
// and you can send parameter also
$output = $this->requestAction('controllerName/actionName/'.$parameter);
?>
3 голосов
/ 10 августа 2010

Есть несколько подходов к этому.Что я не могу сказать из вашего описания, это именно то, что вы ищете.Если просто создать массив элементов, доступных в ваших представлениях, я бы поместил его в app_controller.php

var $teams = array('team1', 'team2', 'team3');

beforeFilter() {
   $this->set('teams', $this->teams);
}

Затем, по вашему мнению, вы можете получить доступ к массиву с помощью переменной: $ team

Если вы хотите вызывать команды только для определенных представлений, не рекомендуется устанавливать эту переменную для ВСЕГО.Вы можете обойти это, настроив функцию в контроллере приложения.

function get_teams_array() {
   $teams = array('team1', 'team2', 'team3');
   return $teams;
}

Затем соберите элемент, который будет вызывать эту функцию: views / elements / team.ctp

<?php
$teams = $this->requestAction(
             array('controller' => 'app', 'action' => 'teams'),
             array('return')
          );

/** process team array here as if it were in the view **/
?>

Тогда вы можете просто вызвать элемент с вашей точки зрения:

<?php echo $this->element('team'); ?>
0 голосов
/ 04 мая 2018

В CakePHP 3. * вы можете использовать помощников.

https://book.cakephp.org/3.0/en/views/helpers.html#creating-helpers

1 - Создайте своего помощника внутри src / View / Helper :

/* src/View/Helper/TeamHelper.php */
namespace App\View\Helper;

use Cake\View\Helper;

class TeamHelper extends Helper
{
    public function getName($id)
    {
        // Logic to return the name of them based on $id
    }
}

2 - Как только вы создали своего помощника, вы можете загрузить его в свои представления.
Добавить вызов $this->loadHelper('Team'); внутри / src / View / AppView.php :

/* src/View/AppView.php */
class AppView extends View
{
    public function initialize()
    {
        parent::initialize();
        $this->loadHelper('Team');
    }
}

3 - После того, как ваш помощник был загружен, вы можете использовать его в своих представлениях:

<?= $this->Team->getName($id) ?>
0 голосов
/ 10 августа 2010

Вы можете добавить в свой файл /app/config/bootstrap.php что-то вроде:

Configure::write('teams', array('team1', 'team2'));

Тогда везде вы можете получить этот массив с помощью:

$teams = Configure::read('teams');

и использовать его.

...