2015-02-13 3 views
0

Я пытаюсь включить php-файл, содержащий мой HTML-код, и внутри этого файла я хочу повторить некоторые переменные. Позвольте мне показать вам мой код:Есть ли способ включить php-файл, содержащий переменную?

Это функция Я звоню на клиенте AJAX, чтобы получить результат HTML:

public function generateHtmlModal($orderId){ 
     $r = $this->getOrderData($orderId); 
     $html = file_get_contents(__DIR__ . "/../view/modal-order.php"); 
     $html2 = "<h3>Order nº $r[order_id]</h3>"; 
     return $html; 
    } 

Обратите внимание, что я создаю $ html2 для проверки и возврата вместо $ HTML. Это работает хорошо, он печатает HTML с идентификатором заказа. Но я хотел использовать разметку HTML в отдельном файле и загружать его в мою функцию PHP. Это пример файла .php с HTML-разметкой, что я хочу, чтобы включить:

<!-- FILE MODAL-ORDER.PHP--> 
<div id="orderModal" class="modal fade"> 
     <div class="modal-body row"> 
        <h3>Pedido nº <?php $r['id_pedido']?></h3>... 

Так, в принципе я ожидал PHP просто обернуть файл в строковой переменной $ HTML и интерпретировать: $ R [» id_pedido '] как моя переменная $ r от функции. Я пробовал некоторые другие варианты, такие как включение php start tag, но не успех.

Возможно ли это в этой ситуации?

+0

Вы должны смотреть в рамки MVC как Codeigniter или учиться на TWIG шаблонам. – CodeGodie

+0

Вам действительно нужно вернуть РЕЗУЛЬТАТ РАБОТЫ сервера PARSING/ОЦЕНКА файла modal-order.php, а не самого файла. Клиент не может напрямую запускать этот файл PHP. Нет прямого способа сделать то, что вы хотите. Вам нужно что-то, чтобы GENERATE HTML, который вы хотите вернуть. – mrunion

+0

'' Есть ли способ включить php-файл, содержащий переменную? '" Да, с 'include', но не с тем, что вы делаете. – developerwjk

ответ

1

Вы можете добиться этого с помощью ob_start(), ob_get_contents() и ob_end_clean():

<?php 

public function generateHtmlModal($orderId) 
{ 
    ob_start(); 

    $r = $this->getOrderData($orderId); 
    include(__DIR__ . "/../view/modal-order.php"); 
    $html = ob_get_contents(); 

    ob_end_clean(); 

    return $html; 
} 

?> 
+0

Ты потрясающий! Спасибо :) –

+0

Добро пожаловать;) – wheelmaker24

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