Modifications aand started working on adminBundle

This commit is contained in:
Florian Bouillon 2019-03-20 00:00:53 +01:00
parent 73a8455cba
commit fafe29f42d
12 changed files with 79 additions and 23 deletions

View File

@ -11,7 +11,8 @@
], ],
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"AdminPanel\\": "src/" "AdminPanel\\": "src/AdminPanel",
"": "src/Modules"
} }
} }
} }

View File

@ -0,0 +1,19 @@
<?php
namespace AdminPanel\Classes;
class Controller {
protected $urlArguments = array();
public function setUrlArguments($args) {
$this->urlArguments = $args;
}
protected function getUrlArguments() {
return $this->urlArguments;
}
//TODO implements functions and variables to add functionnalities to controllers
}

View File

@ -1,10 +0,0 @@
<?php
namespace AdminPanel\Classes;
class Controller {
//TODO implements functions and variables to add functionnalities to controllers
}

View File

@ -0,0 +1,10 @@
<?php
namespace AdminLib\Classes;
use AdminPanel\Classes\Controller;
class AdminController extends Controller {
}

View File

@ -0,0 +1,13 @@
<?php
namespace AdminLib\Controller;
use AdminLib\Classes\AdminController;
class IndexController extends AdminController {
public function index() {
return "Hello Administrator!";
}
}

View File

@ -0,0 +1,9 @@
{
"routes": {
"adminIndex": {
"path": "/admin/",
"controller": "\\AdminLib\\Controller\\IndexController",
"function": "index"
}
}
}

View File

@ -1,6 +1,6 @@
<?php <?php
namespace AdminPanel\Modules\Index\Controller; namespace Index\Controller;
use AdminPanel\Classes\Controller; use AdminPanel\Classes\Controller;
@ -11,6 +11,7 @@ class IndexController extends Controller {
} }
public function test() { public function test() {
var_dump($this->getUrlArguments());
return "test working!"; return "test working!";
} }
} }

View File

@ -2,12 +2,12 @@
"routes": { "routes": {
"route_name": { "route_name": {
"path": "/", "path": "/",
"controller": "\\AdminPanel\\Modules\\Index\\Controller\\IndexController", "controller": "\\Index\\Controller\\IndexController",
"function": "index" "function": "index"
}, },
"route_name2": { "route_name2": {
"path": "/test/{slug}/", "path": "/test/{slug}/",
"controller": "\\AdminPanel\\Modules\\Index\\Controller\\IndexController", "controller": "\\Index\\Controller\\IndexController",
"function": "test", "function": "test",
"args": { "args": {
"slug": { "slug": {

View File

@ -1,6 +1,6 @@
<?php <?php
namespace AdminPanel\Modules\ModuleName\Controller; namespace ModuleName\Controller;
use AdminPanel\Classes\Controller; use AdminPanel\Classes\Controller;

View File

@ -1,9 +1,14 @@
{ {
"routes": { "routes": {
"route_name": { "route_name": {
"path": "/example", "path": "/example/test-{arg}",
"controller": "\\AdminPanel\\Modules\\ModuleName\\Controller\\ExampleController", "controller": "\\AdminPanel\\Modules\\ModuleName\\Controller\\ExampleController",
"function": "example" "function": "example",
"args": {
"arg": {
"regex": "/[a-z]+/"
}
}
} }
} }
} }

View File

@ -1,4 +1,5 @@
<?php <?php
ini_set('display_errors', 'On'); ini_set('display_errors', 'On');
define("ROOT", __DIR__); define("ROOT", __DIR__);
@ -20,11 +21,14 @@ foreach ($modules as $module) {
$json = json_decode(file_get_contents($moduleDIR . "/" . strtolower($module) . ".json")); $json = json_decode(file_get_contents($moduleDIR . "/" . strtolower($module) . ".json"));
foreach ($json->routes as $routeName => $routeArgs) { foreach ($json->routes as $routeName => $routeArgs) {
$args = isset($routeArgs->args) ? $routeArgs->args : new stdClass(); $args = isset($routeArgs->args) ? $routeArgs->args : new stdClass();
$composants = slugEqualToURI($routeArgs->path, $_SERVER["REQUEST_URI"], $args);
if(slugEqualToURI($routeArgs->path, $_SERVER["REQUEST_URI"], $args)) { if($composants !== false) {
$loader->loadClass($routeArgs->controller); $loader->loadClass($routeArgs->controller);
$function = $routeArgs->function; $function = $routeArgs->function;
echo (new $routeArgs->controller)->$function(); /** @var AdminPanel\Classes\Controller $controller */
$controller = new $routeArgs->controller;
$controller->setUrlArguments($composants);
echo $controller->$function();
die; die;
} }
} }
@ -48,11 +52,12 @@ function startsWith($haystack, $needle)
* @param string $slug * @param string $slug
* @param object $options options->regex &| options->setting * @param object $options options->regex &| options->setting
* *
* @return bool * @return bool|array
*/ */
function slugEqualToURI($slug, $uri, $options) { function slugEqualToURI($slug, $uri, $options) {
$uri = explode("/", trim($uri, "\/")); $uri = explode("/", trim($uri, "\/"));
$slug = explode("/", trim($slug, '\/')); $slug = explode("/", trim($slug, '\/'));
$return = array();
if(count($uri) != count($slug)) return false; if(count($uri) != count($slug)) return false;
@ -61,7 +66,10 @@ function slugEqualToURI($slug, $uri, $options) {
if(preg_match("/{.+}/", $value)) { if(preg_match("/{.+}/", $value)) {
$elemnt = preg_replace("/{|}/", "", $value); $elemnt = preg_replace("/{|}/", "", $value);
$elOptions = $options->$elemnt; $elOptions = $options->$elemnt;
if($elOptions->regex != null && preg_match($elOptions->regex, $uri[$key])) continue; if($elOptions->regex != null && preg_match($elOptions->regex, $uri[$key])) {
$return[$elemnt] = $uri[$key];
continue;
}
else return false; else return false;
//TODO correspond with module settings //TODO correspond with module settings
} else { } else {
@ -69,5 +77,5 @@ function slugEqualToURI($slug, $uri, $options) {
else return false; else return false;
} }
} }
return true; return $return;
} }