我有一个名为mycomponent
的组件模型 paypal.php
控制器 paypal.php
视图
贝宝 view.html.php 的index.html
TMPL(文件夹) 如default.php 的index.html
在控制器中我有这个代码
<?php
// No direct access.
defined('_JEXEC') or die;
jimport('joomla.application.component.controlleradmin');
/**
* Objectdefects list controller class.
*/
class MycomponentControllerPaypal extends JControllerAdmin
{
public function paypaldetails()
{
$model = $this->getModel('paypal');
// Get token
$token = urlencode(htmlspecialchars(JRequest::getVar('token')));
if (!$token)
{
// Missing $token parameter
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('COM_INSTALLER_MSG_MISSING_TOKEN'));
}
else
{
// Install plugin
$model->paypaldetails($token);
}
}
}
在模型中我有这段代码
public function paypaldetails($token){
$environment= $this->environment;
// Add request-specific fields to the request string.
$nvpStr = "&TOKEN=$token";
// Execute the API operation; see the PPHttpPost function above.
$httpParsedResponseAr = $this->PPHttpPost('GetExpressCheckoutDetails', $nvpStr);
//var_dump($httpParsedResponseAr);
if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])) {
$paypaldetails=array();
$paypaldetails["firstname"]= $httpParsedResponseAr['FIRSTNAME'];
$paypaldetails["lastname"] = $httpParsedResponseAr["LASTNAME"];
$paypaldetails["countrycode"] = $httpParsedResponseAr["COUNTRYCODE"];
$this->paypaldetails=$paypaldetails;
$a=$this->paypaldetails;
var_dump($a);
} else {
exit('GetExpressCheckoutDetails failed: ' . print_r($httpParsedResponseAr, true));
}
}
在view / template / default.php中我有这个
<?php
// no direct access
defined('_JEXEC') or die;
// Import CSS
$document = JFactory::getDocument();
$document->addStyleSheet('components/com_mycomponent/assets/css/defects.css');
$results = $this->items;
var_dump($results);
echo 'Firstname: '.$results[firstname];
echo '<br>Lastname: '.$results[lastname];
echo '<br>Countrycode: '.$results[countrycode];
当我运行此网址时index.php?option=com_fewostar&view=paypal&task=paypal.paypaldetails&token=EC-92L7275685367793U&PayerID=TGWAUKNJLH2WL
我先查看var_dump($ a);位于模型上,但第二个var_dump($ results);位于views / paypal / tmpl / default.php中不显示,并且视图中的字段不显示。因为任何原因这个网址没有调用视图。当我在没有任务的情况下运行此URL index.php?option=com_fewostar&view=paypal
代码时,将显示视图。但对于这个网址
index.php?option=com_fewostar&view=paypal&task=paypal.paypaldetails&token=EC-92L7275685367793U&PayerID=TGWAUKNJLH2WL
没有显示视图。我如何调用此任务的视图,可能是我需要其他视图文件,不同的default.php?
答案 0 :(得分:3)
我在这里看到了几个问题。 首先,代码并不完全使用Joomla MVC风格(即使它适用于您,熟悉Joomla的人可能更难调试)。
模型方法应该调用getPaypaldetails
并返回
public function getPaypaldetails()
{
// For Joomla 1.7+ use JInput instead of JRequest (deprecated)
$token = JFactory::getApplication()->input->getVar('token');
// some code
return $paypaldetails;
}
view.html.php应该从模型获取数据并分配给自己
public function display($tpl = null)
{
// Get some data from the models
$items = $this->model->get('paypaldetails');
// If data are incorrect, show nice error message
// ...
$this->items = $items;
}
视图布局文件应放在/com_fewostar/views/paypal/tmpl/default.php
答案 1 :(得分:1)
默认情况下,视图仅由“display”任务调用(这是默认任务)。由于您使用自己的任务,因此需要在任务完成后重定向到视图,或者尝试在最后加载显示功能。