it’s running fine when i tested in local server, but when i uploaded 000webhost server to it’s showing an error.
an error My Routes:
my routes :
JavaScript
x
$routes->get('/komik/create', 'komik::create');
$routes->get('/komik/edit/(:segment)', 'komik::edit/$1');
$routes->delete('/komik/(:num)', 'komik::delete/$1');
$routes->get('/komik/(:any)', 'Komik::detail/$1');
can anyone helping me?
my controller
JavaScript
<?php
namespace AppControllers;
use AppModelsData_KomikModel;
use AppModelsGambarModel;
use AppModelsSoalModel;
class Komik extends BaseController
{
protected $komikModel;
public function __construct()
{
$this->komikModel = new Data_KomikModel();
$this->gambarModel = new GambarModel();
$this->soalModel = new SoalModel();
// dd(session()->get('email'));
}
public function index()
{
if (!session()->has('username')) {
return redirect()->to('/auth/login');
}
// $komik = $this->komikModel->findAll();
$data = [
'title' => 'Data Komik',
'komik' => $this->komikModel->getKomik()
];
// $komikModel = new AppModelsData_KomikModel();
// $komikModel = new Data_KomikModel();
return view('dataKomik/komik', $data);
}
public function detail($slug)
{
$komik = $this->komikModel->getKomik($slug);
$gambar = $this->gambarModel->getGambar($slug);
$soal = $this->soalModel->getDataSoal($slug);
// dd($soal);
$data = [
'title' => 'Info Komik',
'komik' => $komik,
'gambar' => $gambar,
'soal' => $soal,
'validation' => ConfigServices::validation()
];
if (empty($data['komik'])) {
throw new CodeIgniterExceptionsPageNotFoundException('Judul Komik ' . $slug . 'Tidak Ditemukan');
}
return view('dataKomik/detail', $data);
}
public function create()
{
// session();
$data = [
'title' => 'Form Tambah Data Komik',
'validation' => ConfigServices::validation()
];
return view('dataKomik/create', $data);
}
public function save()
{
if (!$this->validate([
'judul' => [
'rules' => 'required|is_unique[data_komik.judul]',
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
// $validation = ConfigServices::validation();
// return redirect()->to('/komik/create')->withInput()->with('validation', $validation);
return redirect()->to('/komik/create')->withInput();
}
$fileSampul = $this->request->getFile('sampul');
if ($fileSampul->getError() == 4) {
$namaSampul = 'default.jpg';
} else {
// $namaSampul = $fileSampul->getName();
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Ditambahkan.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function delete($id)
{
$komik = $this->komikModel->find($id);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $komik['sampul']);
}
$this->komikModel->delete($id);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Dihapus.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function edit($slug)
{
$data = [
'title' => 'Form Ubah Data Komik',
'validation' => ConfigServices::validation(),
'komik' => $this->komikModel->getKomik($slug)
];
return view('dataKomik/edit', $data);
}
public function update($id)
{
$komikLama = $this->komikModel->getKomik($this->request->getVar('slug'));
if ($komikLama['judul'] == $this->request->getVar('judul')) {
$rule_judul = 'required';
} else {
$rule_judul = 'required|is_unique[data_komik.judul]';
}
if (!$this->validate([
'judul' => [
'rules' => $rule_judul,
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
return redirect()->to('/komik/edit/' . $this->request->getVar('slug'))->withInput();
}
$fileSampul = $this->request->getFile('sampul');
$komik = $this->komikModel->find($id);
if ($fileSampul->getError() == 4) {
$namaSampul = $this->request->getVar('sampulLama');
} else {
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $this->request->getVar('sampulLama'));
}
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'id_komik' => $id,
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Diubah.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
//--------------------------------------------------------------------
}
an error
JavaScript
Controller or its method is not found: AppControllerskomik::create
i try to hide detail’s method in url, it’s running fine in local server but why it’s showing an error when i uploaded to web hosting
Advertisement
Answer
Hello I just look at your code i think codeigniter 4 is more powerful of detecting routes. Base on your route you don’t even need to create those routing. Call your controller and methods without creating routing.
Here is it
JavaScript
namespace AppControllers;
use AppModelsData_KomikModel;
use AppModelsGambarModel;
use AppModelsSoalModel;
class Komik extends BaseController
{
protected $komikModel;
public function __construct()
{
$this->komikModel = new Data_KomikModel();
$this->gambarModel = new GambarModel();
$this->soalModel = new SoalModel();
// dd(session()->get('email'));
}
public function index()
{
if (!session()->has('username')) {
return redirect()->to('/auth/login');
}
// $komik = $this->komikModel->findAll();
$data = [
'title' => 'Data Komik',
'komik' => $this->komikModel->getKomik()
];
// $komikModel = new AppModelsData_KomikModel();
// $komikModel = new Data_KomikModel();
return view('dataKomik/komik', $data);
}
public function detail($slug)
{
$komik = $this->komikModel->getKomik($slug);
$gambar = $this->gambarModel->getGambar($slug);
$soal = $this->soalModel->getDataSoal($slug);
// dd($soal);
$data = [
'title' => 'Info Komik',
'komik' => $komik,
'gambar' => $gambar,
'soal' => $soal,
'validation' => ConfigServices::validation()
];
if (empty($data['komik'])) {
throw new CodeIgniterExceptionsPageNotFoundException('Judul Komik ' . $slug . 'Tidak Ditemukan');
}
return view('dataKomik/detail', $data);
}
public function create()
{
// session();
$data = [
'title' => 'Form Tambah Data Komik',
'validation' => ConfigServices::validation()
];
return view('dataKomik/create', $data);
}
public function save()
{
if (!$this->validate([
'judul' => [
'rules' => 'required|is_unique[data_komik.judul]',
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
// $validation = ConfigServices::validation();
// return redirect()->to('/komik/create')->withInput()->with('validation', $validation);
return redirect()->to('/komik/create')->withInput();
}
$fileSampul = $this->request->getFile('sampul');
if ($fileSampul->getError() == 4) {
$namaSampul = 'default.jpg';
} else {
// $namaSampul = $fileSampul->getName();
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Ditambahkan.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function delete($id)
{
$komik = $this->komikModel->find($id);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $komik['sampul']);
}
$this->komikModel->delete($id);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Dihapus.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function edit($slug)
{
$data = [
'title' => 'Form Ubah Data Komik',
'validation' => ConfigServices::validation(),
'komik' => $this->komikModel->getKomik($slug)
];
return view('dataKomik/edit', $data);
}
public function update($id)
{
$komikLama = $this->komikModel->getKomik($this->request->getVar('slug'));
if ($komikLama['judul'] == $this->request->getVar('judul')) {
$rule_judul = 'required';
} else {
$rule_judul = 'required|is_unique[data_komik.judul]';
}
if (!$this->validate([
'judul' => [
'rules' => $rule_judul,
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
return redirect()->to('/komik/edit/' . $this->request->getVar('slug'))->withInput();
}
$fileSampul = $this->request->getFile('sampul');
$komik = $this->komikModel->find($id);
if ($fileSampul->getError() == 4) {
$namaSampul = $this->request->getVar('sampulLama');
} else {
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $this->request->getVar('sampulLama'));
}
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'id_komik' => $id,
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Diubah.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
//--------------------------------------------------------------------
}
Then in your links use this
JavaScript
<a href="<?= base_url('komik/create')?>"> Create</a>
OR
If you still need to use the routing, remove the forward slash in front of the route that is instead of
JavaScript
$routes->get('/komik/create', 'komik::create');
$routes->get('/komik/edit/(:segment)', 'komik::edit/$1');
$routes->delete('/komik/(:num)', 'komik::delete/$1');
$routes->get('/komik/(:any)', 'Komik::detail/$1');
Use this
JavaScript
$routes->get('komik/create', 'komik::create');
$routes->get('komik/edit/(:segment)', 'komik::edit/$1');
$routes->delete('komik/(:num)', 'komik::delete/$1');
$routes->get('komik/(:any)', 'Komik::detail/$1');
I think this helps! if not call my attention