PHP enrutando una página con el marco delgado -- php campo con slim camp Relacionados El problema

PHP routing a page using the Slim Framework


0
vote

problema

Español

No he encontrado muchas preguntas y respuestas relacionadas con esto hasta ahora, así que pensé que haría la pregunta, ya que me ayudará enormemente como un PHP de aprendizaje principiante y el marco delgado. Es bastante sencillo (creo).

Por lo tanto, quiero enrutar mi página de inicio a otra página llamada sobre.php. Estoy usando el marco delgado / delgado que está instalado en mi carpeta de proveedores. Y tengo un archivo index.php con el siguiente código:

  <?php  require '/vendor/autoload.php';  $app = new SlimSlim();  $app->get('/', function() use($app){   $app->render('about.php'); });  $app->run();  ?>   

También tengo un archivo sobre.php, que existe.

Esto es lo que actualmente está en mi archivo composer.json:

  console.log(total)0  

Cuando ejecuto MAMP (configuración para acceder al proyecto en el que estoy trabajando) para ver la página, está en blanco. ¿Alguien puede ayudarme a entender lo que estoy haciendo mal?

Luego, ejecuto esto (eliminando el líder "/" de la declaración Requerido, y agregando una línea para mostrar errores), y mostró un error 500:

  console.log(total)111  
Original en ingles

I haven't found many questions and answers relating to this so far, so thought I would ask the question as it will greatly help me out as a beginner learning PHP and the Slim framework. It's pretty straightforward (i think).

So, I want to route my home page to another page called about.php. I'm using the Slim/Slim framework which is installed in my vendor folder. And I have an index.php file with the following code:

<?php  require '/vendor/autoload.php';  $app = new \Slim\Slim();  $app->get('/', function() use($app){   $app->render('about.php'); });  $app->run();  ?> 

I also have an about.php file, which does exist.

This is what's currently in my composer.json file:

 "require": {     "monolog/monolog": "^1.22",     "slim/slim": "^3.7",     "twig/twig": "^1.32",     "slim/views": "^0.1.3"     } 

When I run MAMP (set-up to access the project I am working on) to see the page, it's blank. Can anyone help me understand what I'm doing wrong?

I've then run this (removing the leading '/' from the require statement, and adding a line to display errors), and it displayed a 500 error:

<?php ini_set('display_errors', 1); require 'vendor/autoload.php';  $app = new \Slim\Slim();  $view = $app->view(); $view->parserOptions = array( 'debug' => true  $app->get('/', function() use($app){   $app->render('about.php');  });  $app->run();  ?> 
     
         
         

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

No estoy claro si quiere que se puede acercarse a la aplicación Slim o no.

es. Cuando alguien va a http://example.com/ ¿Desea que la URL del navegador cambie a http://example.com/about.php donde se trata.php es un archivo PHP completamente independiente en el mismo directorio que su index.php?

Si lo hace, debe redirigir:

  $app->get('/', function ($request, $response) {     return $response->withRedirect('/about.php'); });   

Más generalmente, Slim se usa para enrutar y mostrar todas las páginas en su aplicación y en esta situación, no vería el $app->get('/', function ($request, $response) { return $response->withRedirect('/about'); }); 4 en la URL. Esto se debe a que nuestra aplicación siempre ejecuta index.php, independientemente de la URL real en la barra de direcciones del navegador.

En esta situación, probablemente todavía se redirija, pero sin el .php :

  $app->get('/', function ($request, $response) {     return $response->withRedirect('/about'); });   

También necesitaría un manejador para /about , de lo contrario, no sabrá qué hacer:

  $app->get('/about', function ($request, $response) {     return $response->write("This is my about page"); });   

En realidad, no tienden a escribir el HTML directamente en nuestro manejador. Utilizamos un renderizador. Hay dos en el proyecto SLIM: PhpView y TwigView. The aplicación de esqueleto muestra cómo funciona la versión phpview. También puede encontrar el tutorial en la documentación útil.

Finalmente, si ve un 500, entonces tiene un error PHP en algún lugar. La forma más fácil de encontrar esto es asegurarse de que el ajuste de PHP.INI error_reporting está configurado en myarray.map!{|s| Date.strptime(s, '%m%d%Y') + 7} 0 y que myarray.map!{|s| Date.strptime(s, '%m%d%Y') + 7} 1111 está configurado en myarray.map!{|s| Date.strptime(s, '%m%d%Y') + 7} 2 .

Como ya ha descubierto, la clase principal del Slim 3 se llama myarray.map!{|s| Date.strptime(s, '%m%d%Y') + 7} 3 . También puede habilitar las pantallas de error detalladas dentro del SLIM usando:

  myarray.map!{|s| Date.strptime(s, '%m%d%Y') + 7} 4  

otra vez, generalmente tenemos una myarray.map!{|s| Date.strptime(s, '%m%d%Y') + 7} 5 que contiene esta información de configuración como se muestra en la aplicación de esqueleto.

 

I'm unclear if you want about.php to be separate from your Slim application or not.

i.e. when someone goes to http://example.com/ do you want the browser's URL to change to http://example.com/about.php where about.php is a completely independent PHP file in the same directory as your index.php?

If you do then you need to redirect:

$app->get('/', function ($request, $response) {     return $response->withRedirect('/about.php'); }); 

More usually, Slim is used to route to and display all pages in your application and in this situation, you wouldn't see the .php in the URL. This is because our app always runs index.php regardless of the actual URL in the the browser's address bar.

In this situation, you would probably still redirect, but without the .php:

$app->get('/', function ($request, $response) {     return $response->withRedirect('/about'); }); 

You would also need a handler for /about otherwise Slim won't know what to do:

$app->get('/about', function ($request, $response) {     return $response->write("This is my about page"); }); 

We don't actually tend to write the HTML directly in our handler though. We use a renderer. There's two in the Slim project: PhpView and TwigView. The Skeleton application shows how the PhpView version works. You may also find the tutorial in the documentation useful.

Finally, if you see a 500, then you have a PHP error somewhere. The easiest way to find this is to ensure that the php.ini setting error_reporting is set to E_ALL and that display_errors is set to On.

As you've already discovered, Slim 3's main class is called App. You can also enable detailed error displays within Slim using:

$app = new Slim\App(['settings' => ['displayErrorDetails' => true]]); 

Again, usually we have a separate settings.php file containing this configuration information as shown in the skeleton application.

 
 
 
 

Relacionados problema

1  No se puede conseguir que los cors trabajen con una API delgada  ( Unable to get cors working with a slim api ) 
Estoy realmente luchando para conseguir que CORS trabajando con Slim y Angularjs Solicitud HTTP de AngularJS: $http({ method: 'GET', headers: { ...

0  SLIM V3 PUT METHET y recupere los datos de publicación  ( Slim v3 put method and retrieve post data ) 
He agregado la ruta para actualizar los correos electrónicos en una base de datos que usa el método de PUT $app->put('/notifications/{email}', 'add_email_a...

1  Marco delgado, no se puede llegar a la conexión de PDO SQL Server que está dentro de un contenedor de un controlador  ( Slim framework cannot reach pdo sql server connection that is inside a containe ) 
En mi app.php configuro un contenedor donde configuro la conexión de la base de datos: $container['db'] = function ($c) { $db = $c['settings']['d...

8  El servidor incorporado de PHP muestra la página de índice en lugar del archivo estático  ( Php built in server shows index page instead of static file ) 
He creado un proyecto con Slim 3 y Twig usando sus ejemplos más simples. La estructura de la carpeta es la siguiente: - public - index.php - styl...

0  Pathfor no funciona en el marco delgado 3  ( Pathfor not working in slim framework 3 ) 
En Slim 3, tengo una ruta con un camino con nombre $app->get('/admin/edit-course/{id}', 'AdminController:edit_course')->setName('/admin/edit-course'); ...

0  slim.conv2d y tf.nn.conv2d  ( Slim conv2d and tf nn conv2d ) 
En mis experimentos, ambos realizan el uso de la red slim.conv2d(relu = none) y tf.nn.conv2d , encontré que hay una diferencia entre estos 2 ops. para l...

1  No puede obtener el cuerpo de la solicitud de eliminación con un marco delgado  ( Cannot get body from delete request with slim framework ) 
Estoy trabajando en una aplicación usando backbone.js y marco delgado. El problema está aquí: necesito eliminar un registro ejecutando un procedimiento almace...

2  Regla de autorización HTTP en HTACCESS- CONVERTIDAR A NGINX  ( Http authorization rule in htaccess convert to nginx ) 
Recientemente he movido mi solicitud de Apache a Nginx Server. Hemos escrito API está en marco delgado. Por lo tanto, para mejorar la seguridad básica de la A...

5  ¿Cómo puedo agregar un filtro personalizado a mis plantillas de ramitas dentro de Slim?  ( How can i add a custom filter to my twig templates inside of slim ) 
usando el ejemplo de http://twig.senseniolabs.org/ DOC / Advanced.HTML # Creación-AN-Extension : Dentro de mi archivo Slim que crea la vista: $filter = ...

26  Slim Framework siempre devuelve el error 404  ( Slim framework always return 404 error ) 
En estos días, estoy usando delglés 'Slim Framework como mi herramienta más simple para desarrollar la API web PHP. Usando estos dos artículos: coeneret...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos