2015-03-08 3 views
0

В классе нам нужно создать собственную инфраструктуру mvc в php. У меня есть метод, который возвращает представление в двух формах, первый показывает его, а второй - переменной, подобной содержимому. Проблема заключается в том, что в методе load_view для второй формы я использовал return require_once, но это делает код html и everyting get показан, когда я не хочу его показывать.как вернуть код php/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> 
+1

Вы не просили вопрос – Zach

+0

извините, я его отредактировал –

+0

Почему 'echo require_once ('' ...? – Mikolaj

ответ

0

ок я получить его здесь новый код 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'); 
    } 
} 
0

Использование файла получить содержимое вместо требовать

if ($async) { 
    return file_get_contents("yourfile.php"); 
} 
+0

Возможно, вам придется немного поработать с ним, сейчас я на мобильный, но file_get_contents должен получить страницу html без ее печати на странице – Zach

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