2015-11-19 6 views
1

Кто-нибудь знает, как я могу показать файл ответов .xml в представлении? Измените xml как html?Yii2 визуализировать ответ XML-файл в представлении

нашли что-то вроде этого:

http://code.google.com/p/yii/source/browse/trunk/framework/web/widgets/CTextHighlighter.php 

Я не уверен, если это может помочь мне, потому что это для старой версии Yii ...

ответ

1

В действии контроллера положить

\Yii::$app->response->format = \yii\web\Response::FORMAT_XML 

Помните, чтобы сделать вид, используя renderPartial() вместо render(), поэтому раскладка не будет применяться.

Наконец, в представлении введите xml-код.

Например:

Контроллер:

public function actionTest() 
{ 
    \Yii::$app->response->format = \yii\web\Response::FORMAT_XML; 

    return $this->renderPartial('test'); 
} 

Просмотр:

<Tests> 
    <Test TestId="0001" TestType="CMD"> 
    <Name>Convert number to string</Name> 
    <CommandLine>Examp1.EXE</CommandLine> 
    <Input>1</Input> 
    <Output>One</Output> 
    </Test> 
</Tests> 

Это все!

+0

Да, это работает, но мне нужно найти форматирующий код для отображения xml с подсветкой кода в html. Мне нужно найти способ отображения XML-файла в поле html. С вашим примером, могу ли я сделать это для достижения этого? – Lackeeee

+0

Я сделал следующий, В контроллере: \ Yii :: $ app-> response-> format = \ yii \ web \ Response :: FORMAT_HTML; $ xmlOutput = htmlentities ($ xml); return $ this-> render ('thirdstep', ['xml' => $ xmlOutput]); И на вид:

  
Lackeeee

0

При модификации формата ответ внутри действие, прежде чем делает это приемлемый подход, можно также использовать каркасную функцию - yii\filters\ContentNegotiator фильтра:

use yii\filters\ContentNegotiator; 
use yii\web\Response; 

... 

/** 
* @inheritdoc 
*/ 
public function behaviors() 
{ 
    return [ 
     [ 
      'class' => ContentNegotiator::className(), 
      'only' => ['test'], 
      'formats' => [ 
       'application/json' => Response::FORMAT_JSON, 
      ], 
     ], 
    ]; 
} 

Таким образом, логика установки форматов ответ и выходные данные отделяются (аналогично yii\filters\VerbFilter), и несколько действий управляются лучше. Также вы можете построить XML из массива и использовать больше опций.

3

Со ссылкой на решение Фабрицио, это позволит вам редактировать стили через .css:

нагрузки и вывода XML в представлении:

/views/site/xml.php

<?php echo file_get_contents(Yii::getAlias('@app/web/').'doc.xml'); 

Как вы можете видеть , Я поместил свой XML-документ в папку web, вы можете настроить его в соответствии с вашими требованиями.

В контроллере создать действие для отображения вида:

public function actionXml() { 
    Yii::$app->response->format = \yii\web\Response::FORMAT_RAW; 
    Yii::$app->response->headers->add('Content-Type', 'text/xml'); 
    return $this->renderPartial('xml'); 
} 

Обратите внимание, что FORMAT_XML метод \yii\web\Response класса, указанного в решении Фабрицио будет обернуть ваш XML в <response>...</response> тегах, и в то числе фактических данных в виде текста в <span>...</span>.

Вместо этого убедитесь, что у вас есть ссылка на таблицу стилей в вашем XML-разметки:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="/css/doc.css"?> 

Еще раз, не стесняйтесь, чтобы настроить расположение .css в соответствии с вашими потребностями.

В файле .css, просто обратитесь к вашему XML-сущностям, как вы бы с HTML тегами:

RootEntity { 
    display: block; 
} 

Надеется, что это помогает!