2

&format=raw を URL に渡さずに joomla 2.5 で raw 出力を強制するにはどうすればよいですか?

私はこれを試しましたcontroller.php

require_once (JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'document'.DS.'raw'.DS.'raw.php');
JFactory::$document = new JDocumentRaw();
//doesn't work, outputs only "Array"

JRequest::setVar('tmpl', 'component');//doesn't disable view rendering

$document = &JFactory::getDocument();
$doc = &JDocument::getInstance('raw');
$document = $doc;
//gives me Strict Standards: Only variables should be assigned by reference in ...
//and doesn't disable view rendering

私は生の出力を印刷するので、コントローラから Jview などをビルドすることさえしませんdie()が、もっと良い方法があるかどうかを確認したかったのですか?

4

5 に答える 5

0

私にとっては、生なしで別の方法でやっていますが、うまくいきます

$mainfraim = & JFactory::getApplication();
        $idContact = JRequest::getVar('id_contact');
        $modelContact = $this->getModel('clientcontact');
        if($modelContact->delete($idContact))
            print "1";
        else 
            print "0";
        $mainfraim->close();

JFactory を開き、やりたいことを何でも実行し、結果を得るために閉じます。JSON が必要な場合は、必要なものを何でもエコーします

 $matches = array_slice($matches, 0, 15);

        echo json_encode($matches);
于 2014-01-26T21:22:39.183 に答える
0

少し遅れましたが、これが必要なときに狩りに時間を費やしすぎたので、聞いてください。

このコードを使用して Joomla プラットフォームをロードし、「すべてを利用可能」にし、必要に応じて独自の出力を作成しました。私の場合、「api」呼び出しで別のシステムとやり取りしたかったので、これをルートディレクトリに置き(安全のための他のチェックを行います)、出来上がり-JSONまたはXML出力で、これでうまくいきました。

私のルートで「index_api.php」として

// We are a valid Joomla entry point.
define('_JEXEC', 1);

// Setup the base path related constant.
define('JPATH_SITE', dirname(__FILE__));
define('JPATH_BASE', JPATH_SITE);
define('JPATH_PLATFORM', JPATH_BASE . '/libraries');

// Import the platform
require_once JPATH_PLATFORM.'/import.php';

define('DS', DIRECTORY_SEPARATOR);

if (file_exists(JPATH_BASE . '/includes/defines.php'))
    include_once JPATH_BASE . '/includes/defines.php';

if (!defined('_JDEFINES'))
    require_once JPATH_BASE.'/includes/defines.php';

require_once JPATH_BASE.'/includes/framework.php';

// Instantiate the application.
$app = JFactory::getApplication('site');

// Make sure that the Joomla Platform has been successfully loaded.
if (!class_exists('JLoader'))
    exit('Joomla Platform not loaded.');

/* Now try some standard Joomla stuff. None of the below is necessary, just showing that Joomla is loaded and running*/
$config = new JConfig();

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('version_id');
$query->from('#__schemas');
$query->where('extension_id=700');
$db->setQuery($query);
$db->query();
if($db->getErrorNum()) {
    die($db->getErrorMsg());
}else{
    echo "<pre>Joomla Version is ".$db->loadResult()."</pre>";

}

echo "<pre>".print_r($config,true)."</pre>";
echo "<pre>".print_r($db,true)."</pre>";
echo "<pre>".print_r($app,true)."</pre>";
于 2012-12-06T17:38:40.013 に答える
0

新しいインスタンスを取得する代わりにsetTypeforを使用する必要があります。の代わりにビューJDocumentも必要になります。view.raw.phpview.html.php

以下のコードをコントローラーに追加すると、問題が解決するはずです。

public function __construct()
{
    parent::__construct();

    $document = JFactory::getDocument();
    $document->setType('raw');
}

独自の出力テンプレートを (たとえばtmpl=max4everの代わりにtmpl=component) 作成して、出力を好きなようにカスタマイズすることもできます。このスレッドの回答を参照してください

于 2012-04-26T18:02:46.957 に答える