我正在使用Codeigniter并编写了一个方法来创建css / js链接,连接它们然后将它们传递给我的视图。它之前一直在工作,直到我决定用最新的CI版本创建一个干净的项目副本,现在它还没有用。
连接数据的方法部分如下:
foreach ($header_css as $item) {
$str .= '<link rel="stylesheet" href="'. base_url() . $item . '" type="text/css" />';
}
JS文件有一个类似的文件。当打印上一段代码时,我得到一个空字符串,所以我决定使用htmlentities:
foreach ($header_css as $item) {
$str .= htmlentities('<link rel="stylesheet" href="'. base_url() . $item . '" type="text/css" />');
}
它有效...部分。我的意思是,如果我在此处打印带有链接的字符串,但现在当我将字符串传递给视图时,数据将被打印在屏幕上而不是添加到头部。所以这是我的观点:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo (isset($title)) ? $title : ''; ?></title>
<meta name="description" content="Test">
<meta name="author" content="Test">
<?php
# load assets
echo (isset($assets)) ? $assets : '';
?>
<script>var ajax_home = "<?php echo base_url(); ?>ajax/";</script>
</head>
<body>
回显资产的部分是在屏幕上打印变量的内容,而不是将资产解析为<script>...</script>
或<link rel="stylesheet" ... />
有关为何发生这种情况的任何迹象?
感谢。
答案 0 :(得分:3)
连接数据的方法部分如下:
foreach ($header_css as $item) {
$str .= '<link rel="stylesheet" href="'. base_url() . $item . '" type="text/css" />';
}
JS文件的类似内容。当打印上一段代码时,我得到一个空字符串,所以我决定使用 htmlentities: 以下代码不适用于JavaScript,适用于样式表
foreach ($header_css as $item) {
$str .= htmlentities('<link rel="stylesheet" href="'. base_url() . $item . '" type="text/css" />');
}
应该是,
foreach ($header_js as $item) {
$str .= "<script type='text/javascript' src='". base_url() . $item . "'/>";
}
<强> &安培;你的观点有(咳!):
<?php
# load assets
echo (isset($assets)) ? $assets : '';
?>
所以,我的问题是:
echo (isset($str)) ? $str : '';
< / LI>
are you returning that $str variable.. ?
嗯,这里有一些例子,希望你能解决问题:)
/**
* Build Css or Script link
* @param array $assets [description]
* @param string $type [description]
* @return [type] [description]
*/
function build_assets($assets = array(), $type = 'css')
{
$str = '';
if (!empty($assets) && is_array($assets) && $type == 'css') {
foreach ($assets as $key => $file) {
$str .= "<link type='text/css' rel='stylesheet' href='" . base_url($file) . ".css' />";
}
} elseif (!empty($assets) && is_array($assets) && $type == 'javascript') {
foreach ($assets as $key => $file) {
$str .= "<script type='text/javascript' src='" . base_url($file) . ".js'></script>";
}
}
return $str;
}
/**
* Testing the method
* @return [type] [description]
*/
function index()
{
$data = [];
// get all style sheets
$style = $this->build_assets(['style', 'page', 'form']);
// get all js files
$script = $this->build_assets(['style', 'page', 'form'], 'javascript');
// assign in 'assets' variable
$data['assets'] = $style . $script;
// send to template/view
$this->load->view('ViewTemplate', $data);
}
<强> &安培;观看代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CodeIgniter</title>
<!-- CSS and JavaScript -->
<?php echo isset($assets) ? $assets : '' ?>
<!-- End Here -->
</head>
<body>
<di class="welcome">Say Hello to CodeIgniter!!!</di>
</body>
</html>