Joomla不显示任务视图

时间:2013-03-22 08:55:07

标签: php url joomla

我有一个名为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?

2 个答案:

答案 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”任务调用(这是默认任务)。由于您使用自己的任务,因此需要在任务完成后重定向到视图,或者尝试在最后加载显示功能。