View Full Version : کار نکردن datamapper بر روی هاست لینوکسی
alterman
چهارشنبه 07 مهر 1395, 15:04 عصر
من از کدایگنایتر 2.6 و datamapper
http://datamapper.maglok.nl
به عنوان orm برای کدایگنایتر استفاده می کنم.
بر روی wampserver در لوکال کل پروژه به خوبی کار میکنه و هیچ مشکلی نیست
اما امروز که می خواستم پروژه رو روی هاست بیارم ، پروژه بالا نیومد.
اگر کسی از orm datamapper تا حالا توی یک پروژه استفاده کرده راهنمایی کنه ممنون میشم.
ضمن اینکه برای عیب یابی ، کدایگنایتر رو جداگانه روی هاست نصب کردم و مشکلی نبود.
ولی وقتی datamapper رو روی هاست بهش اضافه کردم سایت بالا نیومد!
numberone1
چهارشنبه 07 مهر 1395, 16:08 عصر
شما پروژه رو از حالت production دربیار بزار رو حالت development بعد ببین چه اروری میده تا بشه بیشتر راهنمایی کرد.
معمولا فرق ویندوز و لینوکس اینه که ویندوز case insensitive ولی لینوکس case sensitive
فایل های کنترلر باید حرف اولشون حتما حروف بزرگ باشه. روی لینوکس ارور میده که کنترلر پیدا نمیشه
alterman
چهارشنبه 07 مهر 1395, 16:20 عصر
همین فرمایش شما رو انجام دادم ، مشکل اینجاست که دیتامپر جای model ها رو پیدا نمی کنه!
حتی دستی هم مدل رو لود کردم(
$this->load->model('test');)
اما باز هم نمی شناسه
توی پروژه قبلیم هم به این مشکل خورده بودم، یادم نیس چی کار کردم درست شد!
متن اروری هم که الان میده این هست
Unable to locate the model you have specified: test
alterman
چهارشنبه 07 مهر 1395, 16:22 عصر
در واقع وقتی از دیتامپر استفاده می کنیم نباید مدل ها رو به صورت دستی لود بکنیم
وقتی که مدل از دیتامپر ارث بری میکنه باید بتوانیم در همه جا وقتی یک Instance ازش میگیریم قابل استفاده باشه
numberone1
چهارشنبه 07 مهر 1395, 16:46 عصر
من همچنان فکر میکنم مشکل شما از اسم فایل یا اسم کلاس باشه
اسم فایل مدل باید کامل lowercase باشه و اسم کلاس حرف اولش capital باشه
اسم فایل مدل نباید با هیچ فایلی هم نام باشه. همیشه بهترین راه برای تعریف مدل اضافه کردن _model با آخر اسمش هست.
مثال اسم فایل test_model.php
مثال
class Test_model extends CI_Model {
function __construct()
{
parent::__construct();
}
function index()
{
// کد
}
}
اگر همه چیز درست تعریف شده باشه باید به مدل از طریق url دسترسی مستقیم داشته باشی
مثال
site.com/application/models/test_model.php
باید پیغام عدم دسترسی بصورت مستقیم به فایل و ببینی
alterman
چهارشنبه 07 مهر 1395, 17:25 عصر
من همچنان فکر میکنم مشکل شما از اسم فایل یا اسم کلاس باشه
اسم فایل مدل باید کامل lowercase باشه و اسم کلاس حرف اولش capital باشه
اسم فایل مدل نباید با هیچ فایلی هم نام باشه. همیشه بهترین راه برای تعریف مدل اضافه کردن _model با آخر اسمش هست.
قوانین نام گذاری مدل ها در datamapper فرق می کنه
http://datamapper.maglok.nl/pages/models.html
class Name extends DataMapper {
// Optionally, don't include a constructor if you don't need one.
function __construct($id = NULL)
{
parent::__construct($id);
}
// Optionally, you can add post model initialisation code
function post_model_init($from_cache = FALSE)
{
}
}
این موردی که شما اشاره کردید مربوط به حالتی میشه که می خوایم از حالت پیش فرض کدایگنایتر استفاده کنیم و در مدل مثلا از کلاس های active record استفاده کنیم
مشکل من هم این هست که نمی تونم دیتامپر رو روی ci نصب کنم (البته روی هاست چون در local دقیقا با همین تنظیمات کاملا کار می کند)
numberone1
چهارشنبه 07 مهر 1395, 18:05 عصر
این موردی که شما اشاره کردید مربوط به حالتی میشه که می خوایم از حالت پیش فرض کدایگنایتر استفاده کنیم و در مدل مثلا از کلاس های active record استفاده کنیم
مشکل من هم این هست که نمی تونم دیتامپر رو روی ci نصب کنم (البته روی هاست چون در local دقیقا با همین تنظیمات کاملا کار می کند)
این کدی که شما گذاشتی دقیقا کدوم قسمتش قوانین نام گذاریش با چیزی که من گفتم فرق میکنه؟!!!!
هر کتابخونه یا پلاگینی بخواد به کد ایگنایتر اضافه بشه حتما حتما حتما با رعایت قوانین پایه خود فریم ورک کار میکنه. پلاگین ها نمیتونن برای خودشون قوانین دلخواه تعریف کنند.
این که میگی شما برنامت روی ویندوز کار میکنه وروی لینوکس کار نمیکنه فقط و فقط میتونه از 2 تا مشکل باشه
1- آدرس دهی
2- نام گذاری
به غیر از این تفسیر کد توی ویندوز و لینوکس باهم تفاوتی نداره.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.