Я искал учебники, чтобы лучше понять это, но мне не повезло. Пожалуйста, простите за длинное объяснение, но я хочу убедиться, что я хорошо объясню.
Во-первых, я довольно новичок в структуре MVC, хотя я делал уроки и учился как мог.
Я перешел через живой сайт в модель Zend Framework. Пока у меня есть все представления в views / scripts / index / example.phtml.
Поэтому я использую один IndexController и у меня есть код в каждом методе Action для каждой страницы: IE public function exampleAction()
Поскольку я не знал, как взаимодействовать с моделью, я поместил все методы внизу контроллера (толстый контроллер).
Таким образом, у меня был рабочий сайт с использованием View и Controller, а не модели.
...
Теперь я пытаюсь научиться включать Модель.
Итак, я создал вид по адресу:
view/scripts/calendar/index.phtml
Я создал новый контроллер по адресу:
controller/CalendarControllers.php
и новая модель по адресу:
model/Calendar.php
Проблема в том, что я не правильно общаюсь с моделью (я все еще новичок в ООП).
Можете ли вы просмотреть мой контроллер и модель и сказать мне, если вы видите проблему.
Мне нужно вернуть массив из runCalendarScript (), но я не уверен, смогу ли я вернуть массив в объект, как я пытаюсь? Я не очень понимаю, как "запустить" runCalendarScript () из контроллера?
Спасибо за любую помощь! Ради краткости я вычеркиваю большинство методов:
* +1034 * Контроллер:
<?php
class CalendarController extends Zend_Controller_Action
{
public function indexAction()
{
$finishedFeedArray = new Application_Model_Calendar();
$this->view->googleArray = $finishedFeedArray;
}
}
Модель:
<?php
class Application_Model_Calendar
{
public function _runCalendarScript(){
$gcal = $this->_validateCalendarConnection();
$uncleanedFeedArray = $this->_getCalendarFeed($gcal);
$finishedFeedArray = $this->_cleanFeed($uncleanedFeedArray);
return $finishedFeedArray;
}
//Validate Google Calendar connection
public function _validateCalendarConnection()
{
...
return $gcal;
}
//extracts googles calendar object into the $feed object
public function _getCalendarFeed($gcal)
{
...
return $feed;
}
//cleans the feed to just text, etc
protected function _cleanFeed($uncleanedFeedArray)
{
$contentText = $this->_cleanupText($event);
$eventData = $this->_filterEventDetails($contentText);
return $cleanedArray;
}
//Cleans up all formatting of text from Calendar feed
public function _cleanupText($event)
{
...
return $contentText;
}
//filterEventDetails
protected function _filterEventDetails($contentText)
{
...
return $data;
}
}
Редактировать: извините, я не знаю, почему мое форматирование в коде выглядит так ужасно ...