2015-01-15 5 views
0

Я хочу загрузить файл svg на основе параметра.
например, если параметр = A, тогда загрузите A.svg, если параметр = B, тогда загрузите B.svg и т. Д.
Для этого случая я использую Codeigniter, поэтому на Model I загружаю файл svg, например это:
Загрузить файл SVG на стороне сервера PHP

Model.php

$svgTag = '<div id="svg-content" >' 
      . '<input type="radio" name="test"/>' 
      . file_get_contents(APPPATH. 'views/svg/'.$param.'.svg', TRUE) 
      . '</div>' 

После этого я загружаю $svgTag на просмотр.
view.php

<html> 
    <body> 
     <?php echo $svgTag; ?> 
    </body> 
</html> 

Мой ожидание файл SVG будет загружен в div#svg-content, но фактический результат в том, что SVG загружается после тега <body> как это:
РЕЗУЛЬТАТ

<html> 
    <body> 
     <svg>........</svg> <!-- Loaded SVG File --> 
     <div id="svg-content" > 
     <input type="radio" name="test"/> 
     </div> 
    </body> 
</html> 

Я хочу добавить событие на радиокнопку, если его щелкнули, а затем измените цвет изображения SVG.
ЕСЛИ Я использую <object> Я не могу применить этот стиль.

ПРИМЕЧАНИЕ: Это содержание файла, который я пытаюсь загрузить:

<?xml version="1.0" encoding="utf-8"?> 
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
     viewBox="0 0 1280 800" enable-background="new 0 0 1280 800" xml:space="preserve"> 
    <g> 
     <polygon points="358.3,524.2 328.3,524.2 328.3,665 415,665 415,640 358.3,640 "/> 
    </g> 
</svg> 

Есть ли способ, чтобы получить результат, как это ..?

<html> 
    <body> 
     <div id="svg-content" > 
     <input type="radio" name="test"/> 
     <svg>........</svg> <!-- Loaded SVG File --> 
     </div> 
    </body> 
</html> 

ответ

0

Наконец-то я нашел ответ.
Для загрузки SVG-файла должна использоваться функция fread().
Таким образом, это должно быть так:

$fh = fopen(APPPATH. 'views/svg/'.$param.'.svg', 'r'); 
$svg_file = fread($fh, 25000); 
$svgTag = '<div id="svg-content" >' 
      . '<input type="radio" name="test"/>' 
      . $svg_file 
      . '</div>' 
1

Используйте <img> тег, чтобы вставить его в страницу, это даст вам полную CONTROLE размещения в HTML

$svgTag = '<div id="svg-content" >' 
     . '<input type="radio" name="test"/>' 
     . '<img src="'.APPPATH. 'views/svg/'.$param.'.svg'.'" alt="">' 
     . '</div>' 

Here is удивительный ответ на который использовать <img>, <object> или <embed> для SVG файлы?

+0

Да, я уже знаю об этом теге, но я не могу применить CSS к SVG, потому что из другого источника. – Praditha

Смежные вопросы