PDA

View Full Version : استفاده از مدل برای پیج های استاتیک (حل شد)



Tarragon
یک شنبه 06 بهمن 1392, 15:10 عصر
سلام
من می خوام در صفحات static خود Yii مثل(about) می خوام از دیتابیس استفاده کنم.
حالا اگر بخوام از دیتابیس استفاده کنم بهترین کار استفاده از مدله.(راهه دیگه ای بلد نیستم.)
حالا می خوام بدونم چطوری بهش مدل اضافه کنم آخه خودش مدل نداره.
پیشاپیش از جواب های مفیدتون ممنونم.

MMSHFE
یک شنبه 06 بهمن 1392, 17:06 عصر
مدلهای پروژه رو قاعدتاً باید بشناسه. اگه نشناخت، با دستور import ویژگی Autoload پوشه Models و Components رو (درصورت نیاز) اضافه کنید. این دستورات رو باید ابتدای صفحه Static بنویسید:


Yii::import('application.models.*');
Yii::import('application.components.*');

اینطوری ویژگی Lazy Loading موجود در Yii رو برای این پوشه های protected/models و protected/components فعال میکنید و درنتیجه هر کلاسی از این پوشه ها مورد استفاده قرار بگیره، بطور خودکار بارگذاری میشه.
درصورت نیاز میتونید فایل موردنظرتون رو هم بطور دستی require کنید و منتظر Lazy Loading نشین (که توصیه نمیکنم). مثال:

require_once 'Users.php';
که البته اگه بخواین همینطوری بدون مشخص کردن مسیر کار کنید، باید دستورات import قبلی رو نوشته باشین.
برای مثال به کد زیر دقت کنید:


<?php
Yii::import('application.models.*');
/* @var $this SiteController */

$this->pageTitle=Yii::app()->name . ' - About';
$this->breadcrumbs=array(
'About',
);
?>
<h1>About</h1>

<p>This is a "static" page. You may change the content of this page
by updating the file <code><?php echo __FILE__; ?></code>.</p>

<?php echo '<pre>' . print_r(User::model()->findAll(), true) . '</pre>'; ?>

من این کد رو توی صفحه about.php همون پروژه Trackstar نوشتم و همونطور که میبینید، به کلاس مدل User تونستم دسترسی پیدا کنم. البته طبیعتاً خاصیت Lazy Loading وقتی کاربرد داره که کلاسها توی فایلهایی همنام با خودشون ذخیره شده باشن. مثلاً کلاس مدل User توی فایل User.php ذخیره شده. امیدوارم خوب توضیح داده باشم.

Tarragon
یک شنبه 06 بهمن 1392, 19:16 عصر
سلام
خیلی ممنونم آقای شهرکی.
فقط یه مسئله الان من
Yii::import('application.models.*');
var_dump(Setting::model());
رو اول کدم وارد کردم اما این ارور رو می ده :
Fatal error: Call to undefined method Setting::model() in D:\Program Files\Ampps\www\dlpp\protected\views\site\index.ph p on line 4
در صورتی که من مطمئنم مدلی با همین نام ساختم.

MMSHFE
یک شنبه 06 بهمن 1392, 20:27 عصر
یه چک کنید شاید Settings یا یه چیزی شبیه اینه. پوشه Models رو چک کنید.