FuelPHP - Visualizações

Viewé a camada de apresentação do aplicativo MVC. Ele separa a lógica do aplicativo da lógica da apresentação. Quando um controlador precisa gerar HTML, CSS ou qualquer outro conteúdo, ele encaminha a tarefa para o mecanismo de visualização.

O FuelPHP fornece uma classe simples e flexível, View, com todos os recursos necessários de um view engine. A classe de visualização suporta renderização de arquivo de visualização O arquivo de visualização é uma página HTML com instruções PHP incorporadas. Variáveis ​​do arquivo de visão podem ser definidas usando a classe View como array PHP e referenciadas no arquivo de visão usando a chave do array. Vamos verificar alguns dos métodos importantes da classe View.

forja

  • Purpose - Cria um novo objeto View

  • Parameter - A seguir estão os parâmetros

    • $file - Caminho do arquivo de visualização em relação à pasta de visualizações, fuel / app / views

    • $data - Matriz de valores

    • $filter - Define a codificação automática, o padrão é as configurações no arquivo de configuração principal

  • Returns - Instância da vista

Por exemplo,

$view = View::forge ('path/to/view', array( 
   'title' => "Show employee, 
   'employees' => $employees, 
));

filtro automático

  • Purpose - Defina se codificar os dados ou não

  • Parameter - A seguir está o parâmetro

    • $filter - verdadeiro / falso

  • Returns - Objeto de visualização atual

Por exemplo,

$view->auto_filter(); 
$view = $view->auto_filter(false);

set_filename

  • Purpose - Permite definir ou alterar o arquivo de visualização.

  • Parameter - A seguir está o parâmetro -

    • $file - Caminho para visualizar o arquivo em relação à pasta de visualizações, combustível / app / visualizações

  • Returns - Objeto de visualização atual

Por exemplo,

$view = new View();
$view>set_filename('path/to/view');

conjunto

  • Purpose - Defina o valor de uma ou mais variáveis

  • Parameter - A seguir estão os parâmetros

    • $key - Nome da variável ou matriz de valores

    • $value - Valor / nulo

    • $filter - Configuração de codificação, verdadeiro / falso

  • Returns - Objeto de visualização atual

Por exemplo,

$view = new View(); 
$view->set(array('name' => 'Jon'));

set_global

set_global é semelhante a set, exceto que se aplica a todas as visualizações e as variáveis ​​são acessíveis por todas as visualizações. Este é um método estático.

View::set_global('name', 'Jon', false);

set_safe

  • Purpose - Defina o valor de uma ou mais variáveis ​​com codificação segura ativada.

  • Parameter - A seguir estão os parâmetros -

    • $key - Nome da variável ou matriz de valores

    • $value - Valor / nulo

  • Returns - Objeto de visualização atual

Por exemplo,

$view = new View(); 
$view->set_safe(array('name' => 'Jon'), null);

pegue

  • Purpose - Obtenha o valor de uma ou mais variáveis

  • Parameter - A seguir estão os parâmetros

    • $key - Nome da variável

    • $default - Valor padrão a ser retornado se a chave não for encontrada

  • Returns - Valor da chave de entrada

Por exemplo,

$view = new View(); 
$name = $view>get('name');  // name = 'Jon'

render

  • Purpose - Renderizar os arquivos de visualização em string mesclando-os com as variáveis ​​locais e globais

  • Parameter - A seguir estão os parâmetros -

    • $file - O nome do arquivo de visualização

  • Returns - O arquivo de visualização renderizado como string

Por exemplo,

$html = View::forge()->render('/path/to/view');

Criar uma vista

Para entender as visualizações, vamos modificar o método de ação, action_show do controlador, Controller_Employee .

funcionário.php

<?php  
   class Controller_Employee extends Controller { 
      public function action_show() {
         return View::forge('employee/show'); 
      } 
   }

Agora crie uma pasta funcionário no diretório de visualizações, localizado em fuel / app / views . Em seguida, crie um arquivo show.php dentro da pasta de funcionários e adicione o seguinte código.

show.php

<h3> My first view </h3>

Agora, solicite a url http: // localhost: 8080 / employee / show e produz o seguinte resultado.

Passando dados para ver

Podemos passar dados para as visualizações usando métodos de visualização conforme discutido anteriormente. A seguir está um exemplo simples.

funcionário.php

class Controller_Employee extends Controller { 
   public function action_show() { 
      $data = array(); //stores variables going to views 
      $data['name'] = ‘Jon’; 
      $data[‘job’] = ‘Designer’;  
      
      //assign the view to browser output 
      return View::forge('employee/show', $data); 
   } 
}

Agora, adicione as mudanças no view Arquivo.

show.php

<html> 
   <body> 
      Hello, <?php echo $name; ?>. 
      Your job is, <?php echo $job; ?>. 
   </body> 
</html>

Depois de solicitar o URL, ele exibirá o nome e o trabalho da seguinte forma -

Ver filtro

As visualizações usam codificação de saída para passar o que você quiser. Se você quiser passar dados não filtrados, podemos usar o método set.

funcionário.php

class Controller_Employee extends Controller { 
   public function action_show() { 
      $view = \View::forge('employee/show'); 
      $view->set('name', 'Jon', true); 
      $view->set('job', '<em>Designer</em>', false); 
      return $view; 
   } 
}

Depois de solicitar o URL, ele exibirá os detalhes do trabalho com ênfase, conforme a seguir.

Vistas aninhadas

FuelPHP suporta visualizações aninhadas. Em visualizações aninhadas, uma visualização pode conter uma ou mais visualizações. Para definir as visualizações em outra visualização, podemos usar o método de renderização da seguinte forma.

funcionário.php

class Controller_Employee extends Controller { 
   public function action_nestedview() { 
      
      //assign variables 
      $data = array(); 
      $data['title'] = 'Home';  
      $data['name'] = 'Jon'; 
      $data['job'] = 'Designer';  
      $views = array(); 
      $views['head'] = View::forge('head', $data)->render(); 
      $views['content'] = View::forge('employee/show', $data)->render();  
      return View::forge('layout', $views, false)->render(); 
   } 
}

fuel / app / views / layout.php

<html> 
   <head> 
      <?php echo $head; ?> 
   </head> 
   
   <body> 
      <?php echo $content; ?> 
   </body> 
</html>

fuel / app / views / head.php

<title>
   <?php echo $title; ?>
</title>

fuel / app / views / employee / show.php

Hello, <?php echo $name; ?>. 
Your job is, <?php echo $job; ?>.

Depois de solicitar a URL, http: // localhost: 8080 / employee / nestedview e verificar a visualização do código-fonte, ele fornece o seguinte código.

<html> 
   <head> 
      <title>Home</title> 
   </head> 
   
   <body> 
      Hello, Jon. 
      Your job is, Designer. 
   </body> 
</html>

Controlador de modelo

FuelPHP fornece um controlador, Controller_Template, com conceito de layout integrado. O conceito de layout é feito usandobefore() e after()método do controlador. Para usar o controlador de modelo, precisamos estender o controlador usando Controller_Template em vez de Controller. Ao usar o método after () / before (), precisamos chamar parent :: before e parent :: after, caso contrário, o template quebra.

<?php 
   class Controller_Test extends Controller_Template { 
      public function before() { 
         parent::before(); 
         // do stuff 
      } 
        
      public function after($response) { 
         $response = parent::after($response); 
         
         // do stuff 
         return $response; 
      } 
   }

template.php

É um arquivo de modelo padrão no Fuel. O arquivo de modelo é usado para chamar JS, CSS, HTML e chamar visualizações parciais. Está localizado emfuel/app/views/. Os modelos são usados ​​para envolver sua visão em um layout com um cabeçalho, rodapé, barra lateral, etc. Podemos alterar o modelo padrão usando a variável $ template no método de ação a seguir.

fuel / app / classes / controller / test.php

<?php  
   class Controller_Test extends Controller_Template { 
      public $template = 'template_test'; 
      public function action_index() { 
         $this->template->title = 'Example Page'; 
         $this->template->content = View::forge('test/index'); 
      } 
   }

fuel / app / views / template_test.php

<!DOCTYPE html> 
<html> 
   <head> 
      <meta charset = "utf-8"> 
      <title><?php echo $title; ?></title> 
      <?php echo Asset::css('bootstrap.css'); ?> 
   </head> 

   <body> 
      <div> 
         <?php echo $content; ?>
      </div> 
   </body> 
</html>

fuel / app / views / test / index.php

<h3>My Test page</h3>

Agora, solicite a URL http: // localhost: 8080 / test e produz o seguinte resultado.

Resultado

<!DOCTYPE html> 
<html> 
   <head> 
      <meta charset = "utf-8"> 
      <title>Example Page</title> 
      <link type = "text/css" rel = "stylesheet" 
         href = "http://localhost:8080/assets/css/bootstrap.css?1464964766" />
   </head> 
   
   <body> 
      <div> 
         <h3>My Test page</h3> 
      </div> 
   </body> 
</html>

Gerar página de visualização

Você pode gerar uma página de exibição usando o console de óleo de combustível. A seguir está a sintaxe básica.

oil g controller <controller-name> <page1> <page2> ..

Para gerar um controlador de administrador com páginas iniciais e de login, use o seguinte comando.

oil g controller admin home login

Resultado

Creating view: /path/to/app/fuel/app/views/admin/home.php 
Creating view: /path/to/app/fuel/app/views/admin/login.php 
Creating controller: /path/to/app/fuel/app/classes/controller/admin.php