gpt4 book ai didi

php - 如何通过 Controller 调用模型中的方法? Zend 框架

转载 作者:可可西里 更新时间:2023-10-31 23:35:10 25 4
gpt4 key购买 nike

我一直在寻找教程以更好地理解这一点,但我没有运气。请原谅冗长的解释,但我想确保我自己解释清楚。

首先,我对 MVC 结构还很陌生,尽管我一直在做教程并尽我所能地学习。

我一直在将一个实时站点迁移到 Zend Framework 模型中。到目前为止,我在 views/scripts/index/example.phtml 中拥有所有 View 。

因此我使用了一个 IndexController 并且我在每个页面的每个 Action 方法中都有代码:IE public function exampleAction()

因为我不知道如何与模型交互,所以我将所有方法放在 Controller (一个胖 Controller )的底部。

基本上,我通过使用 View 和 Controller 而没有使用模型来创建一个工作站点。

...

现在我正在尝试学习如何合并模型。

所以我在以下位置创建了一个 View :

view/scripts/calendar/index.phtml

我在以下位置创建了一个新 Controller :

controller/CalendarControllers.php

和一个新模型:

model/Calendar.php

问题是我认为我没有与模型正确沟通(我对 OOP 还是新手)。

你能看看我的 Controller 和模型吗,如果你发现问题,请告诉我。

我需要从 runCalendarScript() 返回一个数组,但我不确定是否可以像我尝试的那样将一个数组返回到对象中?我真的不明白如何从 Controller “运行”runCalendarScript()?

感谢您的帮助!为了简洁起见,我去掉了大部分方法的内容:

Controller :

<?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;
}
}

编辑:抱歉 - 我不知道为什么我的代码格式看起来总是那么难看......

最佳答案

乔尔,因此,您将整个模型对象放入一个名为 $finishedFeedArray 的变量中,这会让人感到困惑(它不是一个数组,它是一个对象)。

我认为这就是您的问题所在。然后您尝试将此变量提供给您的 View ,我假设在您的 View 中显示值。在您的 View 脚本中,任何将此变量视为数组的尝试都会导致问题。

试试这个:

class CalendarController extends Zend_Controller_Action
{

public function indexAction()
{
$calendar = new Application_Model_Calendar();

$this->view->googleArray = $calendar->_runCalendarScript();
}
}

那里有一个小的风格问题......我不会命名一个带有下划线作为第一个字符的公共(public)函数。否则,此更改至少会导致您的代码出现问题。

关于php - 如何通过 Controller 调用模型中的方法? Zend 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com