PHP - Ayuda con url amigables

 
Vista:
Imágen de perfil de Leonardo Yoel
Val: 20
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con url amigables

Publicado por Leonardo Yoel (7 intervenciones) el 28/12/2018 14:24:38
Saludos colegas. Hoy decidí crear este tema a fin de q me ayuden a encontrar la manera de realizar url amigables SIN USAR HTACESS. Pues con .hatacess lo e realizado pero me da problemas con ajax y son muchas reglas a usar, muy complejo a la hora d hacer cambios.

He visto como lo hace symfony y adoro eso, solo q usar symfony es bastante complicado para mi proyecto.

No se he indagado buscando alguna clase q me permita hacer esto, algo asi como ezsql_class para la conexios a BD, tipo framework q me sirva para url amigables.

Por favor conocen alguno? Saludos y gracias d antemano...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de santi
Val: 588
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con url amigables

Publicado por santi (204 intervenciones) el 29/12/2018 02:08:46
Hola,

un framework sencillo para empezar es codeigniter, y tienes la opción de url's amigables. Y que no te tire para atrás lo fácil que es, porque puedes hacer lo que te de la gana.. Eso sí, symfony y zend son los mejores con diferencia, pero depende lo que necesites.

También puedes utilizar laravel que está basado en symfony y es uno de los mejores frameworks php que existen por ahora.

A malas y si estás haciendo tu proyecto sin framework puedes utilizar alguna función que seguro que existe por internet:
https://codereview.stackexchange.com/questions/157810/php-class-for-url-generator

https://www.phpclasses.org/package/10123-PHP-Create-a-string-for-a-friendly-URL-for-Google.html.
En este último están las mejores clases de php ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Leonardo Yoel
Val: 20
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con url amigables

Publicado por Leonardo Yoel (7 intervenciones) el 29/12/2018 05:50:22
gracias colega, link como este andaba buscando, implementare esto y dejare la experiencia aqui, nuevamente gracias y saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Yoel
Val: 20
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con url amigables

Publicado por Leonardo Yoel (7 intervenciones) el 30/12/2018 04:42:09
Hola de nuevo amigos. Les dire q gracias a los link compartidos del amigo SANTI he logrado lo q queria. Pues no deseo usar frameworks para mis proyectos, pero a la ves quiero implementar las urls amigables q me dan los frameworks cono symfony o larabel.

El hecho es q he encontrado, gracias a dios, una clase llamada RUTER q la pueden obtener en el siguiente link https://github.com/abalozz/rutas-amigables-con-php
Alli aparece todo masticado y bien clarito... Esta clase esta super buena para procesar urls amigables.

Otra cosa... Las urls las pude hacer mas amigables gracias al link compartido por Santi.

https://www.phpclasses.org/package/10123-PHP-Create-a-string-for-a-friendly-URL-for-Google.html

Combinando estas dos clases se puede lograr un super trabajo exelente...

Luego con mas tiempo les dejo algo de codigo. Si lo necesitan o alguna duda, me la dejan por aqui, saludos.... y gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con url amigables

Publicado por xve (6935 intervenciones) el 30/12/2018 11:45:38
Gracias por compartirlo Leonardo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Yoel
Val: 20
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con url amigables

Publicado por Leonardo Yoel (7 intervenciones) el 04/01/2019 15:23:53
Hola amigos de nuevo aqui, el hecho es que ahora tengo otro problemita con la clase que describ'i con anterioridad y a lo mejor ustedes saben como desarrollarlo.

Explico. Tengo una pagina index.php con el siguiente codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
 
require 'bin/Router.php';
require 'bin/Route.php';
require 'bin/ProductsController.php';
require 'ezsql/mysql_conf.php';
 
 
 
$dirr = $_SERVER['REQUEST_URI'];
 
 
echo "header<br><br>";
 
$router = new Router($dirr);
 
 
$router->add('/', function ()
{
	return '<h1>Home</h1><br>
<a href="/grupos">Ver listado de Grupos</a>';
});
 
$router->add('/grupos', 'ProductsController::grupos');
$router->add('/grupo/:name', 'ProductsController::show');
 
// /ruta/con/un/monton/de/parametros
$router->add('/:a', function ($a)
{
	return "$a<br>";
});
 
$router->run();
 
echo "<br><br><br><br>footer";

posteriormente tengo la clase Router.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
 
class Router {
 
	protected $requestUri;
	protected $routes;
 
	const GET_PARAMS_DELIMITER = '?';
 
	public function __construct($requestUri)
	{
		$this->routes = [];
 
		$this->setRequestUri($requestUri);
	}
 
	public function setRequestUri($requestUri)
	{
		if (strpos($requestUri, self::GET_PARAMS_DELIMITER))
		{
			$requestUri = strstr($requestUri, self::GET_PARAMS_DELIMITER, true);
		}
		$this->requestUri = $requestUri;
	}
 
	public function getRequestUri()
	{
		return $this->requestUri;
	}
 
	public function add($uri, $closure)
	{
		$route = new Route($uri, $closure);
		array_push($this->routes, $route);
	}
 
	public function run()
	{
		$response = false;
		$requestUri = $this->getRequestUri();
 
		foreach ($this->routes as $route)
		{
			if ($route->checkIfMatch($requestUri))
			{
				$response = $route->execute();
				// break para no seguir dando vueltas
				// Ya se encontró la ruta correspondiente
				break;
			}
		}
 
		$this->sendResponse($response);
	}
 
	public function sendResponse($response)
	{
		if (is_string($response))
		{
			echo $response;
		}
		else if (is_array($response))
		{
			echo json_encode($response);
		}
		else if ($response instanceof Response)
		{
			$response->execute();
		}
		else
		{
			header("HTTP/1.0 404 Not Found");
			exit('404');
		}
	}
 
}

donde como pueden ver en la funcion sendResponse te dice que el return solo puede ser un string, una instancia o un array, de lo contrario te devuelve un 404.

El controlador que tengo es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
 
require 'bin/UrlFriendly.php';
require "./ezsql/mysql_conf.php";
 
 
 
 
 
class ProductsController {
 
	public function grupos() {
	  global $db;
 
      $url = new UrlFriendly();
 
	  $sql = "SELECT * FROM grupos";
      $grupos = $db->get_results($sql);
 
	    $return = '
		<h1>Listado de grupos de TuOlimpo</h1><br />
		<table border="1">
		<tr>
		<th>ID</th>
		<th>Nombre</th>
		<th>Fecha</th>
		</tr>
		';
 
		foreach($grupos as $grupo){
 
		$url->setTextoUrl($grupo->nombre);
		$url->setEliminaStopWords(true);
 
		$return .= '
		<tr>
		<td><a href="/urlamigo/grupo/'.$url->getUrlFriendly().'">'.$grupo->id.'</a></td>
		<td>'.$grupo->nombre.'</td>
		<td>'.$grupo->fecha.'</td>
		</tr>
		';
		}
 
		$return .='
		</table>
		';
 
		return $return;
	}
 
	public function show($name) {
 
	  global $db;
 
	  $id = 0;
 
      $url = new UrlFriendly();
 
	  $sql = "SELECT * FROM grupos";
      $grupos = $db->get_results($sql);
 
	  foreach($grupos as $grupo){
 
	    $url->setTextoUrl($grupo->nombre);
		$url->setEliminaStopWords(true);
		$UrlFriend = $url->getUrlFriendly();
 
		if($name == $UrlFriend){
		$id = $grupo->id;
		break;
		}
	  }
 
	  if($id != 0){
	  $sql = "SELECT * FROM grupos WHERE id = ".$id;
      $data = $db->get_row($sql);
 
	  return '
	  <h1>'.$data->nombre.'</h1><br>
	  <br>
	  <b>Fecha de Creado: </b>'.$data->fecha.'
	  <br><br>
	  '.$data->data;
	  }
 
	}
 
}

Como ven tengo que dar el return como un string y no quiero eso, quiero hacer el diseño en una pagina aparte y luego llamarla por la funcion pero con
1
include("midiseno.php");
no funciona tienen idea de como solucionar esto, pues al llamarlo de otra manera que no sea string me da 404 de acuerdo a lo establecido en la funcion sendResponse de la clase reuter.php

Ayudenme por favor... gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar