J'ai cherché des tutoriels pour mieux comprendre cela, mais je n'ai pas de chance. S'il vous plaît pardonnez la longue explication, mais je veux m'assurer que je m'explique bien. Premièrement, je suis relativement nouveau dans la structure MVC, même si j'ai fait des tutoriels et appris le mieux possible.Comment appeler les méthodes d'un modèle via le contrôleur? Zend Framework
J'ai migré sur un site en ligne dans le modèle Zend Framework. Jusqu'à présent, j'ai toutes les vues dans views/scripts/index/example.phtml.
Ainsi donc j'utilise un IndexController et j'ai le code dans chaque méthode d'action pour chaque page: IE public function exampleAction()
Parce que je ne savais pas comment interagir avec un modèle, je mets toutes les méthodes à le bas du contrôleur (un gros contrôleur).
Donc, fondamentalement, j'avais un site de travail en utilisant une vue et un contrôleur et aucun modèle.
...
Maintenant, je suis en train d'apprendre comment intégrer le modèle.
Je créé une Voir à:
view/scripts/calendar/index.phtml
J'ai créé un nouveau contrôleur à:
controller/CalendarControllers.php
et un nouveau modèle à:
model/Calendar.php
Le problème est que je pense Je ne suis pas correctement en communication avec le modèle (je suis encore nouveau à OOP). Pouvez-vous regarder par-dessus mon contrôleur et modèle et dites-moi si vous voyez un problème.
Je dois retourner un tableau de runCalendarScript(), mais je ne suis pas sûr de pouvoir retourner un tableau dans l'objet comme j'essaie de le faire? Je ne comprends pas vraiment comment "exécuter" le runCalendarScript() à partir du contrôleur?
Merci pour toute aide! Je me déshabille sur la plupart des tripes des méthodes pour un souci de concision:
contrôleur:
<?php
class CalendarController extends Zend_Controller_Action
{
public function indexAction()
{
$finishedFeedArray = new Application_Model_Calendar();
$this->view->googleArray = $finishedFeedArray;
}
}
modèle
:
<?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;
}
}
Edit: désolé, je ne sais pas pourquoi ma mise en forme sur le code continue de sembler si moche ...
Génial! Merci beaucoup - cela m'a vraiment appris une grande leçon dans la façon dont tout cela s'accorde bien! – Joel