如何 return 将 php/html 编码到变量中
how to return code php/html into a variable
在class中我们需要在php中制作一个自己的mvc框架。
我有一种方法 returns 有两种形式的视图,第一种显示它,第二种提供内容之类的变量。
问题是,在第二种形式的 load_view 方法中,我使用了 return require_once
但这使得 html 代码和所有内容都在我不想显示的时候显示出来。
这里是 load_view
方法:
function load_view($view, $data, $async){
if (is_array($data)){
foreach ($data as $key => $value) {
$$key = $value;
}
}
if ($async) {
return $tmp = require_once('aplication/view/'.$view.'.php');
} else {
echo require_once('aplication/view/'.$view.'.php');
}
}
实现方法的控制器:
class user extends core_controller {
function __construct() {
$this->data['css'] = array('public/bootstrap/css/bootstrap.min.css',
'public/css/login.css' );
}
function action(){
$this->data['content'] = $this->load_view('loginForm', array(), true);
$this->load_view('templates/template', $this->data);
}
}
观点:
第一:template
<div class="container">
<?php echo $content; ?>
</div>
秒:loginForm
<div class="row vertical-offset-100">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Please sign in</h3>
</div>
<div class="panel-body">
<form method="post" action="login/enter" accept-charset="UTF-8" role="form">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Username" name="username" type="text" required>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password" type="password" value="" required>
</div>
<a href="#" class="btn btn-info btn-block" role="button">Registrarme</a>
<input class="btn btn-lg btn-success btn-block" type="submit" value="Login">
</fieldset>
</form>
</div>
</div>
</div>
</div>
使用文件获取内容而不是 require
if ($async) {
return file_get_contents("yourfile.php");
}
好的,我明白了,这是 load_view
的新代码
function load_view($view, $data, $async){
if (is_array($data)){
foreach ($data as $key => $value) {
$$key = $value;
}
}
if ($async) {
ob_start();
include('aplication/view/'.$view.'.php');
$buffer = ob_get_contents();
@ob_end_clean();
return $buffer;
} else {
echo include('aplication/view/'.$view.'.php');
}
}
在class中我们需要在php中制作一个自己的mvc框架。
我有一种方法 returns 有两种形式的视图,第一种显示它,第二种提供内容之类的变量。
问题是,在第二种形式的 load_view 方法中,我使用了 return require_once
但这使得 html 代码和所有内容都在我不想显示的时候显示出来。
这里是 load_view
方法:
function load_view($view, $data, $async){
if (is_array($data)){
foreach ($data as $key => $value) {
$$key = $value;
}
}
if ($async) {
return $tmp = require_once('aplication/view/'.$view.'.php');
} else {
echo require_once('aplication/view/'.$view.'.php');
}
}
实现方法的控制器:
class user extends core_controller {
function __construct() {
$this->data['css'] = array('public/bootstrap/css/bootstrap.min.css',
'public/css/login.css' );
}
function action(){
$this->data['content'] = $this->load_view('loginForm', array(), true);
$this->load_view('templates/template', $this->data);
}
}
观点:
第一:template
<div class="container">
<?php echo $content; ?>
</div>
秒:loginForm
<div class="row vertical-offset-100">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Please sign in</h3>
</div>
<div class="panel-body">
<form method="post" action="login/enter" accept-charset="UTF-8" role="form">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Username" name="username" type="text" required>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password" type="password" value="" required>
</div>
<a href="#" class="btn btn-info btn-block" role="button">Registrarme</a>
<input class="btn btn-lg btn-success btn-block" type="submit" value="Login">
</fieldset>
</form>
</div>
</div>
</div>
</div>
使用文件获取内容而不是 require
if ($async) {
return file_get_contents("yourfile.php");
}
好的,我明白了,这是 load_view
function load_view($view, $data, $async){
if (is_array($data)){
foreach ($data as $key => $value) {
$$key = $value;
}
}
if ($async) {
ob_start();
include('aplication/view/'.$view.'.php');
$buffer = ob_get_contents();
@ob_end_clean();
return $buffer;
} else {
echo include('aplication/view/'.$view.'.php');
}
}