php smarty问题 undefined index 5
无法显示分配的字符串,Notice:Undefinedindex:inputinE:\myweb\mysmarty\templates_c\com_intro.tplon...
无法显示分配的字符串,
Notice: Undefined index: input in E:\myweb\mysmarty\templates_c\com_intro.tpl on line 6
是什么原因?
tpl:
<html>
<head>
<title>{$title}</title></head>
<body>
hello
{$input}
</body>
</html>
php:
<?php
require 'MyminiSmarty.class.php';
$mysmarty=new MyminiSmarty();
$mysmarty->assign("title","试试");
$mysmarty->assign("input","只是试试而已");
$mysmarty->display("intro.tpl");
?>
Smarty PHP:
<?php
class MyminiSmarty{
//文件路径
var $template_dir="./templates/";
var $complie_dir="./templates_c/";
//存放变量值
var $tpl_vars=array();
function assign($tpl_var,$val=NULL)
{
if($tpl_var!=' ')
{
$this->tpl_vars['$tpl_var']=$val;
}
}
function display($tpl_file){
$tpl_file_path = $this->template_dir.$tpl_file;
//查询是否存在
$complie_file_path=$this->complie_dir."com_".$tpl_file;
if(file_exists($tpl_file_path))
{
$tpl_file_content=file_get_contents($tpl_file_path);
$pattern=array(
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i' );
$replace=array(
'<?php echo $this->tpl_vars["${1}"]; ?>'
);
$new_str=preg_replace($pattern, $replace, $tpl_file_content);
file_put_contents($complie_file_path, $new_str);
echo "ok";
include $complie_file_path;
}
else{return false;}
}
}
?> 展开
Notice: Undefined index: input in E:\myweb\mysmarty\templates_c\com_intro.tpl on line 6
是什么原因?
tpl:
<html>
<head>
<title>{$title}</title></head>
<body>
hello
{$input}
</body>
</html>
php:
<?php
require 'MyminiSmarty.class.php';
$mysmarty=new MyminiSmarty();
$mysmarty->assign("title","试试");
$mysmarty->assign("input","只是试试而已");
$mysmarty->display("intro.tpl");
?>
Smarty PHP:
<?php
class MyminiSmarty{
//文件路径
var $template_dir="./templates/";
var $complie_dir="./templates_c/";
//存放变量值
var $tpl_vars=array();
function assign($tpl_var,$val=NULL)
{
if($tpl_var!=' ')
{
$this->tpl_vars['$tpl_var']=$val;
}
}
function display($tpl_file){
$tpl_file_path = $this->template_dir.$tpl_file;
//查询是否存在
$complie_file_path=$this->complie_dir."com_".$tpl_file;
if(file_exists($tpl_file_path))
{
$tpl_file_content=file_get_contents($tpl_file_path);
$pattern=array(
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i' );
$replace=array(
'<?php echo $this->tpl_vars["${1}"]; ?>'
);
$new_str=preg_replace($pattern, $replace, $tpl_file_content);
file_put_contents($complie_file_path, $new_str);
echo "ok";
include $complie_file_path;
}
else{return false;}
}
}
?> 展开
2个回答
展开全部
MyminiSmarty这个类里面$pattern=array(
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i' );
$replace=array(
'<?php echo $this->tpl_vars["${1}"]; ?>'
);
正则表达式和字符串应该不用array包裹的,直接字符串写上就可以的。
网页上提示的notice错误的意思是你没有初始化input这个变量,php的变量虽然是不用初始化就可以使用,但是网页上还是会报notice错误
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i' );
$replace=array(
'<?php echo $this->tpl_vars["${1}"]; ?>'
);
正则表达式和字符串应该不用array包裹的,直接字符串写上就可以的。
网页上提示的notice错误的意思是你没有初始化input这个变量,php的变量虽然是不用初始化就可以使用,但是网页上还是会报notice错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询