Как вызвать действие контроллера плагина из базового приложения?

Я разрабатываю приложение CakePHP и установил плагин Silas Montgomery Cake FullCalendar.

Я создал таблицу для регистрации, когда люди посещают события, которыми управляет плагин. Итак, у меня есть эта модель:

<?php
App::uses('AppModel', 'Model');
class Attendance extends AppModel {
public $primaryKey = 'idattendance';

public $belongsTo = array(
    'PeopleAttendance' => array(
        'className' => 'People',
        'foreignKey' => 'idpeople',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'AttendanceEvent' => array(
        'className' => 'FullCalendar.Event',
        'foreignKey' => 'idevent',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
}

Как вызвать действие FullCallendar (скажем, add() для добавления событий) из представления посещаемости?

Это работает...

echo $this->Html->link(__('New Event'),'http://localhost:8888/project/full_calendar/events/add');

... но мне это не кажется "тортовым"...

Каким должен быть лучший подход при использовании такого типа плагина? Кроме того, я не проверял полностью, но я предполагаю, что моя модель тоже неверна...


person Pbal    schedule 19.03.2014    source источник


Ответы (2)


Вы должны добавить опцию «плагин» в свой массив ссылок:

$this->Html->link(__('New Event'), array('controller' => 'events', 'action' => 'add', 'plugin' => 'full_calendar'));
person Roberto Maldonado    schedule 19.03.2014
comment
Спасибо за помощь. Из простого любопытства. Если я ВЫПЕЧУ представление, почему Cake не определяет правильную ссылку, глядя на ассоциации? - person Pbal; 20.03.2014

Вы можете использовать параметр plugin для ссылки на действие плагина:

echo $this->Html->link(
    __('New Event'),
    array(
        'plugin' => 'full_calendar', // Define the plugin here as option
        'controller' => 'events',
        'action' => 'add'
    )
);
person Oldskool    schedule 19.03.2014