-
AgBRAT
Junior Member
-
Posts: 25
Threads: 11
Joined: May 2022
Reputation:
0
06-07-2022, 04:06 PM
(This post was last modified: 06-07-2022, 04:16 PM by AgBRAT.)
I am still pretty new to MVC and routing especially but I have managed to get the majority of my site navigable with $routes->setAutoRoute(FALSE). HOWEVER, one of my methods won't load even though the URI appears to be correct.
GET: http://localhost/images/view_image/628460ec47d68 is shown in my browser inspect mode as 200 ok status. The page is still blank though.
Here is the route in question (a part of a group route function):
PHP Code: $routes->get('view_image/(:alphanum)', 'Images\View_Image::index/$1', ['as' => 'view_image']);
Here are my routes, I am using named routes because they made more sense to me.
PHP Code:
Code: /*
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/
// Default Route
$routes->get('/', 'Home::index');
// Login and Registration
$routes->match(['get', 'post'], '/users/register', 'Users::register', ['as' => 'register']);
$routes->match(['get', 'post'], '/users/login', 'Users::login', ['filter' => 'noauth', 'as' => 'login']);
// Admin Routes
$routes->group('/admin', ['filter' => 'auth'], function ($routes)
{
$routes->post('/dashboard', 'admin::dashboard');
});
// Users Routes
$routes->group('users', ['filter' => 'auth'], function ($routes)
{
$routes->get('dashboard', 'Users\Members::index', ['as' => 'member_dashboard']);
$routes->get('profile/(:segment)', 'Users\Members::profile/$1', ['as' => 'member_profile']);
$routes->get('edit_profile/(:segment)', 'Users\Members::edit/$1', ['as' => 'edit_profile']);
});
// Images Routes
$routes->group('images', ['filter' => 'auth'], function ($routes) {
$routes->get('gallery', 'Images\Gallery::index', ['as' => 'gallery']);
$routes->get('manage_uploads', 'Images\Gallery::manage', ['as' => 'manage_uploads']);
$routes->match(['get', 'post'], 'upload', 'Images\Gallery::upload', ['as' => 'upload_image']);
$routes->get('upload', 'Images\Gallery::edit/$1', ['as' => 'edit_upload']);
$routes->match(['get', 'post'], 'upload', 'Images\Gallery::store', ['as' => 'store_upload']);
$routes->get('manage_uploads/(:alphanum)', 'Images\Gallery::delete/$1', ['as' => 'delete_upload']);
$routes->get('view_image/(:alphanum)', 'Images\View_Image::index/$1', ['as' => 'view_image']);
$routes->get('view_image/(:alphanum)', 'Images\View_Image::action/$1', ['as' => 'image_action']);
});
// Logout
$routes->get('logout', 'Users::logout', ['as' =>
'logout']);
And here is the Controller::method/$1 not displaying '\App\Controller\Images\View_Image.php' where I have sent the parameter $viewkey:
PHP Code:
Code: class View_Image extends BaseController
{
protected $imageModel;
protected $actionModel;
protected $commentModel;
protected $subscribeModel;
public function __construct()
{
$this->imageModel = new ImageModel();
$this->actionModel = new ActionModel();
$this->commentModel = new CommentModel();
$this->subscribeModel = new SubscribeModel();
if (session()->get('role') != 0) {
echo 'Access denied';
exit;
}
}
public function index(string $viewkey)
{
$likes = $this->actionModel->getLikes($viewkey);
$dislikes = $this->actionModel->getDislikes($viewkey);
$views = $this->actionModel->getViews($viewkey);
$favorites = $this->actionModel->getFavorites($viewkey);
$singleImage = $this->imageModel->getImage(['viewkey' => $viewkey]);
$data = [];
$data = [
'image' => $singleImage,
'tags' => preg_replace('/-/', ' ', explode(',', $singleImage->tags)),
'title' => $singleImage->title,
'views' => get_num_words($views),
'likePercent' => get_percentage($likes + $dislikes, $likes , 0),
'modified' => get_date_words($singleImage->modified_at, date('Y-m-d H:i:s')),
'likes' => get_num_words($likes),
'dislikes' => get_num_words($dislikes),
'favorites' => get_num_words($favorites),
'comments' => get_num_words($this->commentModel->countComments($viewkey)),
'userLiked' => $this->actionModel->userLiked($viewkey),
'userDisliked' => $this->actionModel->userDisliked($viewkey),
'userFavorited' => $this->actionModel->userFavorited($viewkey),
'userSubscribed'=> $this->subscribeModel->userSubscribed($singleImage->uploader),
'userCommented' => $this->commentModel->userCommented(session()->get('username')),
'imageComments' => $this->commentModel->getComments($viewkey),
'script' => 'js/view_image',
];
echo view('templates/header', $data);
echo view('templates/navigation', $data);
echo view('images/view_image', $data);
echo view('templates/footer', $data);
}
And here is the the part of the view where I route_to the Controller:
PHP Code:
Code: <?php
if (! empty($gallery)) {
foreach ($gallery as $row) {
?>
<div class = 'image-object'>
<a href='<?= route_to('view_image', esc($row->viewkey)); ?>' title='<?= esc($row->title);?>'>
<img src='<?= base_url('/assets/img/uploads/' . $row->filename); ?>' alt='<?= esc($row->title);?>'></a>
|