2015-01-15 26 views
0

我想加載基於參數的svg文件。
例如,如果參數= A然後加載A.svg,如果參數= B然後加載B.svg,依此類推。
對於這種情況,我使用Codeigniter,所以我模型加載svg文件就像這樣的:
在PHP服務器端加載SVG文件

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

最後我找到了答案。
它應該使用fread()函數來加載SVG文件。
因此,它應該是這樣的:

$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