loading...
آموزش فریم ورک Yii
امیر بازدید : 122 یکشنبه 21 مرداد 1397 نظرات (2)
امیر بازدید : 402 پنجشنبه 18 مرداد 1397 نظرات (0)
امیر بازدید : 201 شنبه 13 مرداد 1397 نظرات (0)

checkAccess in Yii2 RBAC برای بررسی میزان دسترسی کاربر جاری به یک نقش (RoleName) یا یک مجوز (Permission) از دستور زیر استفاده می کردیم: [php] Yii::$app->user->can("admin") [/php] در صورتی که بخواهیم میزان دسترسی یک کاربر مشخص به یک نقش یا مجوز خاص را بررسی کنیم از دستور checkaccess استفاده می کنیم شکل کلی این دستور به این صورت می باشد: [php] Yii::$app->authManager->checkAccess($userid, 'roleOrPermission') [/php] خروجی این کد در صورتی که کاربر دسترسی داشته باشد true یا۱ می باشد. امادر صورت عدم دسترسی مقداری بازگردانده نمیشود

امیر بازدید : 132 پنجشنبه 11 مرداد 1397 نظرات (0)

دستورات artisan در laravel  

آشنایی با دستورات artisan در فریم ورک laravel :

 

+تولید کلید تصادفی:

  [php] php artisan key:generate [/php] پس از اجرا فایل .env در رووت پروژه ایجاد می شود (این فایل را در file explorer باز کنید)

+ دریافت ورژن (نسخه) لاراول

[php] php artisan --version [/php]

+ایجاد model

[php] php artisan make:model Article [/php] پس از اجرا در فولدر app مدل ایجاد می شود : Article.php

+ایجاد controller

[php] php artisan make:controller ArticleController [/php] پس از اجرا در فولدر controller که در فولدر http قرار دارد فایل ArticleController.php ایجاد می شود . فولدر http در فولدر app قرار دارد.

+ ایجاد کنترلر با resource

[php] php artisan make:controller PhotoController --resource [/php]

+ ایجاد کنترلر با resource , model

[php] php artisan make:controller PhotoController --resource --model=Photo [/php]

+فعال سازی authentication

[php] php artisan make:auth [/php]  

+ اجرای migration برای ایجاد جداول در دیتابیس

[php] php artisan migrate [/php]  

دستورات artisan در laravel

امیر بازدید : 162 چهارشنبه 10 مرداد 1397 نظرات (0)

نمایش دیتا در لاراول  

نمایش اطلاعات و داده ها در لاراول

جهت نمایش داده ها در فایل های blade از طریق ارسال دیتا از کنترلر به ویو در اینجا توضیح دادیم شما در route نیز می توانید داده را به ویو ارسال نمایید : در route [php] Route::get('greeting', function () { return view('/article/index', ['name' => 'golaravel.ir']); }); [/php] و در ویو [php] salam , {{ $name }}. [/php]

امیر بازدید : 329 پنجشنبه 04 مرداد 1397 نظرات (0)

کامپوننت ها و اسلات ها در لاراول تقریبا شبیه به section ها و layout ها هستند . در مستندات فریم ورک گفته شده که این مفاهیم راحت تر قابل فهم هست. برای مثال : برای هشدار به کاربر یا همان alert ها , به جای اینکه هر دفعه کد تکراری بنویسیم آن را به صورت یک component در ویو ایجاد می کنیم و در جای مد نظر آن را صدا میزنیم محل تعریف این کامپوننت ها در فولدر views قرار می گیرد (resources->views) برای مثال من در این فولدر یکفایل php با نام alert.blade.php ایجاد می کنم: [php]

{{ $slot }}

[/php] در کد بالا ما دو متغییر ایجاد کردیم یک: status که در صورتی که ما مقدار این متغییر را زمان استفاده مشخص نکنیم به صورت پیش فرض متن "success" قرار می گیرد دو: slot که در واقع متغییر پیشفرض component می باشد . حال این کامپوننت را در یکی از ویوها (article/index) صدا میزنیم [php]

@component('alert',[ 'status'=>'danger' ]) توجه! خطایی پیش آمده است! @endcomponent [/php] در کد بالا به وسیله ی دستور component و نام alert ما کامپوننت را صدا زدیم با status مقدار متغییر را مشخص کردیم و محتوایی که بین component و endcomponent قرار دارد مقدار slot ما می باشد توجه داشته باشید که مانند status نمیتوانید slot را صدا بزنید . مگر اینکه از متغییر دیگری استفاده کرده باشید. مثال [php]

{{ $slot }}
{{ $footer }}

[/php] [php] @component('alert',[ 'status'=>'danger', 'footer'=>'goyii.ir - golaravel.ir' ]) توجه! خطایی پیش آمده است! @endcomponent [/php] [caption id="attachment_2459" align="aligncenter" width="300"]goyii.ir-laravel blade goyii.ir-laravel blade[/caption]

امیر بازدید : 200 پنجشنبه 28 تیر 1397 نظرات (0)

<h3><a href="http://www.goyii.ir">RBAC لیست کاربرانی دارای نقش خاص در YII2</a></h3>

در بسیاری از مواقع در پروژه شما نیاز به لیست کاربرانی که دارای یک نقش مشخص هستند دارید.

به عنوان مثال می خواهید لیست کاربرانی که به عنوان مدیر در سایت شما فعالیت می کنند را پیدا کنید:

<a href="http://www.goyii.ir/%d8%b3%d8%b7%d8%ad-%d8%af%d8%b3%d8%aa%d8%b1%d8%b3%db%8c-rbac-%d8%af%d8%b1-yii2-%d9%82%d8%b3%d9%85%d8%aa-%d8%a7%d9%88%d9%84/">rbac </a>دارای متدی است که امکان نمایش id کاربرانی که دارای یک نقش هستند را به شما می دهد :

 

[php]

getUserIdsByRole($roleName)

[/php]

 

پس از آن کافی است شما با یک حلقه کاربران مورد نیاز خود را پیدا کنید:

به کد زیر توجه کنید:

 

[php]

$users = [];

        $list = Yii::$app->authManager->getUserIdsByRole("amin");

        foreach ($list as $value) {

            $u = User::findOne($value);

            $users[$value] = $u->username;

        }

        return $users;

[/php]

امیر بازدید : 78 یکشنبه 16 مهر 1396 نظرات (0)

در فریم ورک yii2 نسخه advanced به صورت پیش فرض مدل user وجود دارد
که در فولدر common و در قسمت models قرار داده شده است.
زمانی که شما پروژه ای را اجرا می کنید (نسخه advance ) امکاناتی نظیر لاگین , لاگ اوت ، ثبت نام و فراموشی رمز عبور به صورت پیش فرض در frontend و در siteController وجود دارد
table user در دیتابیس مرتبط با امکانات بالا در فولدر migration واقع در فولدر console قرار دارد که به شرح زیر می باشد :

db->driverName === 'mysql') {
// http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
}
$this->createTable('{{%user}}', [
'id' => $this->primaryKey(),
'username' => $this->string()->notNull()->unique(),
'auth_key' => $this->string(32)->notNull(),
'password_hash' => $this->string()->notNull(),
'password_reset_token' => $this->string()->unique(),
'email' => $this->string()->notNull()->unique(),
'status' => $this->smallInteger()->notNull()->defaultValue(10),
'created_at' => $this->integer()->notNull(),
'updated_at' => $this->integer()->notNull(),
], $tableOptions);
}
public function down()
{
$this->dropTable('{{%user}}');
}
}

توجه : در رابطه با migration ها در اینجا توضیح داده شده است .
در صورتی که نیاز به تغییر اطلاعات بالا داشتید می توانید آن را تغییر دهید .
برای اجرای کد بالا و پیاده سازی در دیتابیس (ایجاد جدول user) باید در cmd خود کد زیر را اجرا نمایید :

yii migrate --migrationTable=migrations

امیر بازدید : 66 جمعه 14 مهر 1396 نظرات (0)

در این مطلب از سایت goyii.ir نحوه ی اتصال پروژه به دیتابیس را آموزش می دهیم:
برای اتصال پروژه به دیتابیس با توجه به نوع پروژه basic یا  advanced  به روش زیر عمل می کنیم

برای پروژه های basic

در مسیر :


root/config/db.php

اطلاعات دیتابیس خود را در فایب db.php وارد نمایید

return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=tebshahr',
'username' => 'root',
'password' => '123456789',
'charset' => 'utf8',
];

در پروژه های advanded
مسیر:

root/common/config/main-local.php

اطلاعات دیتابیس خود را در فایبmain-local.php وارد نمایید

return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=bge',
'username' => 'root',
'password' => '123456789',
'charset' => 'utf8',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
],
];

امیر بازدید : 65 جمعه 14 مهر 1396 نظرات (0)

در این مطلب از سایت goyii.ir نحوه ی اتصال پروژه به دیتابیس را آموزش می دهیم:
برای اتصال پروژه به دیتابیس با توجه به نوع پروژه basic یا  advanced  به روش زیر عمل می کنیم

برای پروژه های basic

در مسیر :


root/config/db.php

اطلاعات دیتابیس خود را در فایب db.php وارد نمایید

return [
\'class\' => \'yii\\db\\Connection\',
\'dsn\' => \'mysql:host=localhost;dbname=tebshahr\',
\'username\' => \'root\',
\'password\' => \'123456789\',
\'charset\' => \'utf8\',
];

در پروژه های advanded
مسیر:

root/common/config/main-local.php

اطلاعات دیتابیس خود را در فایبmain-local.php وارد نمایید

return [
\'components\' => [
\'db\' => [
\'class\' => \'yii\\db\\Connection\',
\'dsn\' => \'mysql:host=localhost;dbname=bge\',
\'username\' => \'root\',
\'password\' => \'123456789\',
\'charset\' => \'utf8\',
],
\'mailer\' => [
\'class\' => \'yii\\swiftmailer\\Mailer\',
\'viewPath\' => \'@common/mail\',
// send all mails to a file by default. You have to set
// \'useFileTransport\' to false and configure a transport
// for the mailer to send real emails.
\'useFileTransport\' => true,
],
],
];

امیر بازدید : 69 چهارشنبه 12 مهر 1396 نظرات (0)

فریم ورک Yii با استفاده از request امکان دسترسی به پارامتر های ارسالی را برای برنامه نویسان فراهم کرده .
با استفاده از این قابلیت شما می توانید به پارامترهای ارسالی کاربر نظیر post – get , … دسترسی داشته باشین.
یکی از مهمترین آنها ip کاربر می باشد :
برای دریافت ip کاربر به روش زیر عمل می کنیم


$userIP = Yii::$app->request->userIP;

امیر بازدید : 60 پنجشنبه 06 مهر 1396 نظرات (0)

ممکنه که شما در پروژه ی خودتون نیاز به نسخه فریم ورک Yii2 داشته باشید.

برای دریافت ورژن به دو روش می توانیم عمل کنیم»

استفاده از command line

به  فولدر root پروژه بروید . (همانجا که فایل yii وجود دارد) با اجرا گرفتن کد زیر در cmd  ورژن فریم ورک نمایش داده می شود


$ ./yii
This is Yii version 2.0.11.2.

استفاده از Yii API
با استفاده تابع زیر نسخه فریم ورک نمایش داده می شود

$version = Yii::getVersion();

امیر بازدید : 159 سه شنبه 04 مهر 1396 نظرات (0)

آموزش برنامه نویسی php

در gmail  و سایر سرویس های ایمیل معتبر امکان پاسخ دادن به ایمیل های دریافتی به صورت اتوماتیک وجود دارد  که به آن auto reply  می گویند.در این آموزش نحوه ی فعال سازی این امکان در gmail  را قرار داده ایم. کافی است مراحل زیر را به ترتیب انجام بدید.

  1. ابتدا وارد gmail خود شوید
  2. در قسمت سمت راست بر روی آیکون چرخدنده کلیک کنید
  3. در منوی باز شده بر روی settings کلیک کنید:
  4. www.goyii.ir-ارسال اتوماتیک پاسخ در جیمیل
  5. در صفحه ی جدیدی که برای شما باز شده است گزینه ی Vacation responder را پیدا کنید.(در انتهای صفحه قرار دارد)
  6. به صورت پیش فرض این گزینه غیر فعال می باشد . آن را فعال کنید. (Vacation responder on)
  7. سپس رنج تاریخ  ، موضوع و متن پیام خود را انتخاب نمایید
  8. www.goyii.ir-ارسال اتوماتیک پاسخ در جیمیل
  9. و در آخر گزینه ی save را کلیک نمایید.
امیر بازدید : 57 جمعه 31 شهریور 1396 نظرات (0)

در این بخش از آموزش های سایت <a style="color:blue;" href="http://www.goyii.ir">GoYii.ir</a>  به آموزش <a href="http://www.goyii.ir " style="color:blue;">توابع تاریخ</a> در mysql  می پردازیم.

 

تابع NOW() :

تاریخ و ساعت جاری را به صورت "۲۰۱۷-۰۷-۰۷ ۲۰:۰۳:۲۶" برمی گرداند

<code>

SELECT NOW() FROM user

</code>

------------------------------------------------------------------------------------------------------------------------------------------------

تابع CURDATE():

تاریخ جاری را به صورت "۲۰۱۷-۰۷-۰۷" برمی گرداند

 

<code>

SELECT CURDATE() FROM user

</code>

------------------------------------------------------------------------------------------------------------------------------------------------

تابع CURTIME():

تاریخ جاری را به صورت "۲۰:۰۵:۱۲" برمی گرداند

 

<code>

SELECT CURTIME() FROM user

</code>

------------------------------------------------------------------------------------------------------------------------------------------------

تابع DATE():

بخش تاریخ را از یک عبارت date/time بیرون می کشد

خروجی : ۲۰۱۷-۰۶-۱۵

<code>

SELECT DATE("20170615") FROM user

</code>

------------------------------------------------------------------------------------------------------------------------------------------------

تابع EXTRACT():

یکی از بخش های عبارت date/time . را برمی گرداند

خروجی : شماره ماه تاریخ قرار داده شده 

برای مثال زیر ۶

 

<code>

SELECT EXTRACT(MONTH FROM "2017-06-15");

</code>

برای دریافت سال مثال زیر که نتیجه ۲۰۱۷ می باشد

<code>

SELECT EXTRACT(YEAR FROM "2017-06-15");

</code>

------------------------------------------------------------------------------------------------------------------------------------------------

تابع DATE_ADD():

یک فاصله زمانی مشخص را به تاریخ اضافه می کند

خروجی : ۲۰۱۷-۰۶-۲۵

<code>

SELECT DATE_ADD("2017-06-15", INTERVAL 10 DAY);    

</code>

برای اضافه کردن ماه و سال به جای DAY از YEAR  و MONTH استفاده کنید.

------------------------------------------------------------------------------------------------------------------------------------------------

تابع DATE_SUB():

یک فاصله زمانی مشخص را از تاریخ کم می کند

خروجی : ۲۰۱۷-۰۶-۰۵

<code>

SELECT DATE_SUB("2017-06-15", INTERVAL 10 DAY);    

</code>

برای اضافه کردن ماه و سال به جای DAY از YEAR  و MONTH استفاده کنید.

 

------------------------------------------------------------------------------------------------------------------------------------------------

تابع DATEDIFF():

تعداد روز بین دو تاریخ را برمی گرداند

خروجی :۱۰

<code>

SELECT DATEDIFF("2017-06-25", "2017-06-15");  

</code>

------------------------------------------------------------------------------------------------------------------------------------------------

تابع DATE_FORMAT():

تاریخ و ساعت را به فرمت های مختلف نشان می دهد

خروجی :۲۰۱۷-۰۶

<code>

SELECT DATE_FORMAT("2017-06-15", "%Y-%m");  

</code>

به %Y   و %m    

format_mask گفته می شود 

برای آگاهی بیشتر به لینک زیر مراجعه کنید

<a style="color:blue;" href="https://www.w3schools.com/sql/func_mysql_date_format.asp" target="_blank">اینجا</a>

امیر بازدید : 46 شنبه 25 شهریور 1396 نظرات (0)

برنامه نویسی php
اگر شما بخواهید یک عنصر از ارایه حذف کنید می توانید از unset() و یا array_splice() استفاده کنید.
برای دریافت key عنصری که می خواهید حذف کنید از array_search() استفاده کنید.
مثال:
unset:


$array = array(0 => "a", 1 => "b", 2 => "c");
unset($array[1]);

نتیجه در خروجی

Array (
[۰] => a
[۲] => c
)

array_splice:


$array = array(0 => "a", 1 => "b", 2 => "c");
array_splice($array, 1, 1);

نتیجه در خروجی

Array (
[۰] => a
[۱] => c
)

امیر بازدید : 59 یکشنبه 29 مرداد 1396 نظرات (0)

استفاده از متد findByAttributes() در yii1

یکی از متد های CActiveRecord متد findByAttributes می باشد که یک رکورد(سطر) را بر اساس ویژگی ها و شرط های خواسته شده پیدا می کند:
که سه ۳ آرگومان دریافت می کند :

public static findByAttributes(array $attributes, mixed $condition='', array $params=array ( ))

همانطور که در کد بالا مشخص است این سه آرگومان به شرح زیر می باشندک

  1. attributes
    که به صورت آرایه دریافت میشود :
    array('status'=>1)
  2. condition
    پس از attributes به صورت mix استفاده می شود
    "status=1 AND cat_id=:cid"
  3. params
    که به صورت آرایه دریافت می شود . در صورتی که در condition استفاده شده باشد همانند مثال بالا
    array(":cid"=>2)

مثال:

$result = User::model()->findByAttributes(
array('reset_key' => $user->reset_key),
'reset_expires <= NOW()'
);

استفاده از CDbCriteria

$criteria = new CDbCriteria;
$criteria->addCondition("current_date<=".now()); $result = User::model()->findByAttributes(array('reset_key' =>$user->reset_key),$criteria);


Person::model()->findByAttributes(
array('first_name'=>$firstName,'last_name'=>$lastName),
'status=:status',
array(':status'=>1)
);


Person::model()->findByAttributes(
array('first_name'=>$firstName,'last_name'=>$lastName),
array(
'condition'=>'status=:status',
'params'=>array(':status'=>1)
)
);

امیر بازدید : 46 شنبه 28 مرداد 1396 نظرات (0)

استفاده از متد findByAttributes() در yii1

یکی از متد های CActiveRecord متد findByAttributes می باشد که یک رکورد(سطر) را بر اساس ویژگی ها و شرط های خواسته شده پیدا می کند:
که سه ۳ آرگومان دریافت می کند :

public static findByAttributes(array $attributes, mixed $condition=\'\', array $params=array ( ))

همانطور که در کد بالا مشخص است این سه آرگومان به شرح زیر می باشندک

  1. attributes
    که به صورت آرایه دریافت میشود :
    array(\'status\'=>1)
  2. condition
    پس از attributes به صورت mix استفاده می شود
    \"status=1 AND cat_id=:cid\"
  3. params
    که به صورت آرایه دریافت می شود . در صورتی که در condition استفاده شده باشد همانند مثال بالا
    array(\":cid\"=>2)

مثال:

$result = User::model()->findByAttributes(
array(\'reset_key\' => $user->reset_key),
\'reset_expires <= NOW()\'
);

استفاده از CDbCriteria

$criteria = new CDbCriteria;
$criteria->addCondition(\"current_date<=\".now()); $result = User::model()->findByAttributes(array(\'reset_key\' =>$user->reset_key),$criteria);


Person::model()->findByAttributes(
array(\'first_name\'=>$firstName,\'last_name\'=>$lastName),
\'status=:status\',
array(\':status\'=>1)
);


Person::model()->findByAttributes(
array(\'first_name\'=>$firstName,\'last_name\'=>$lastName),
array(
\'condition\'=>\'status=:status\',
\'params\'=>array(\':status\'=>1)
)
);

امیر بازدید : 79 چهارشنبه 25 مرداد 1396 نظرات (0)

برنامه نویسی php
چه زمانی باید از $this و چه زمانی از self استفاده کنیم؟

  1. $this به شی جاری اشاره می کند . refer to object
  2. self به کلاس جاری اشاره می کند.refer to class
  3. $this->member به غیر استاتیک متد و پروپرتی اشاره می کند
  4. self::member به استاتیک متد و پروپرتی اشاره می کند

مثال های زیر برای درک بهتر این موضوع قرار داده می شود

class X {
private $non_static_member = 1;
private static $static_member = 2;
function __construct() {
echo $this->non_static_member . ' '
. self::$static_member;
}
}
new X();

polymorphism با استفاده از $this

class X {
function foo() {
echo 'X::foo()';
}
function bar() {
$this->foo();
}
}
class Y extends X {
function foo() {
echo 'Y::foo()';
}
}
$x = new Y();
$x->bar();

suppressing polymorphic behaviour با استفاده از self

class X {
function foo() {
echo 'X::foo()';
}
function bar() {
self::foo();
}
}
class Y extends X {
function foo() {
echo 'Y::foo()';
}
}
$x = new Y();
$x->bar();

امیر بازدید : 70 شنبه 21 مرداد 1396 نظرات (0)

برنامه نویسی php

استفاده از swiftMailer در فریم ورک Yii
ابتدا در تنظیمات پروژه
basic
config/web.php
advance
common/config/main-local.php


'components' => [
'mail' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@backend/mail',
'useFileTransport' => false,//set this property to false to send mails to real email addresses
//comment the following array to send mail using php's mail function
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => 'username@gmail.com',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
]

سپس برای ارسال ایمیل

\Yii::$app->mail->compose('your_view', ['params' => $params])
->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail'])
->setTo('to_email@xx.com')
->setSubject('This is a test mail ' )
->send();

امیر بازدید : 82 پنجشنبه 19 مرداد 1396 نظرات (0)

به صورت پیش فرض هنگامی که در gridview در Yii2 مطلبی را جستجو می کنین در url شما با یک کوئری استرینگ طولانی مواجه می شوید

شکل زیر :
Capture2

خوب برای اینکه جستجوی شما در gridview به صورت ajax انجام شود همانند yii1 فریم ورک ویجتی با نام Pjax دارد که برای اینکار می توانید از آن استفاده کنید
برای استفاده شما باید این ویجت را در صفحه ای که gridview در آن استفاده شده است قرار دهید
نکته : gridview باید در داخل این ویجت باشد .

نکته : حتما باید ویجت پیجکس رو به این صوت صدا بزنین yii\widgets\Pjax چه هنگامی که آن را شروع می کنید چه هنگامی که پایان می دهید .

\yii\widgets\Pjax::begin([
'enableReplaceState' => false,
'enablePushState' => false,
]);
// echo $this->render('_search', ['model' => $searchModel]);
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'title',
'title_persian',
['class' => 'yii\grid\ActionColumn'],
],
]);
\yii\widgets\Pjax::end();

در صورتی که از _search استفاده می کنید باید به این نکته توجه کنین که


echo $this->render('_search', ['model' => $searchModel]);

در داخل ویجت pjax باشد
در صورتی که پس از انجام کد بالا باز جستجو به صورت ajax انجام نشد
باید برای pjax یک container قرار دهید :

\yii\widgets\Pjax::begin([
'enableReplaceState' => false,
'enablePushState' => false,
'clientOptions' => [
'container' => 'buy_search',
]
]);

و در _search نیز data_pjax را برابر container پی جکس (pjax) قرار دهید

$form = ActiveForm::begin([
'action' => ['index'],
'method' => 'get',
'options' => [
'data-pjax' => '#buy_search'
],
]);

امیر بازدید : 80 جمعه 06 مرداد 1396 نظرات (0)

برنامه نویسی php
برای نمایش لینک در gridview :


GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'label'=>'bla',
'format' => 'raw',
'value'=>function ($data) {
return Html::url('site/index');
},
],
['class' => 'yii\grid\ActionColumn'],
],
]);

امیر بازدید : 56 چهارشنبه 04 مرداد 1396 نظرات (0)

برنامه نویسی php
How to get response as json format(application/json) in yii?

Create this function in your (base) Controller:


protected function renderJSON($data)
{
header('Content-type: application/json');
echo CJSON::encode($data);
foreach (Yii::app()->log->routes as $route) {
if($route instanceof CWebLogRoute) {
$route->enabled = false; // disable any weblogroutes
}
}
Yii::app()->end();
}

امیر بازدید : 56 سه شنبه 03 مرداد 1396 نظرات (0)

برنامه نویسی php
How to get response as json format(application/json) in yii?

Create this function in your (base) Controller:


protected function renderJSON($data)
{
header('Content-type: application/json');
echo CJSON::encode($data);
foreach (Yii::app()->log->routes as $route) {
if($route instanceof CWebLogRoute) {
$route->enabled = false; // disable any weblogroutes
}
}
Yii::app()->end();
}

امیر بازدید : 76 شنبه 03 تیر 1396 نظرات (0)

آموزش فریم ورک های laravel و Yii
هر کنترلری که در پروژه ها استفاده می شود از کلاس Controller ارثبری (extend) میشوند .
این کلاس خود دارای متد ها و پروپرتی هایی است .
در صورتی که شما نیاز به استفاده از انها داشته باشین می توانین آنها را بر اساس نیاز خود دوباره نویسی (override) کنین.
لیست متد ها و پروپرتی ها ی این کلاس در سایت اصلی همراه با توضیحات قرار دارد .جهت نمایش اینجا را کلیک نمایید.
نکته ای که در دوباره نویسی باید توجه داشته باشین اینه که حتما متد اصلی را در انتها صدا بزنید.
برای مثال ما متد beforAction را به این صورت دوباره نویسی می کنیم:

public function beforeAction($action)
{
if($action->id =='ignore' || $action->id =='accept')
{
$this->enableCsrfValidation = false;
}
//return true;
return parent::beforeAction($action);
}

امیر بازدید : 57 یکشنبه 21 خرداد 1396 نظرات (0)

هر مدلی که ما در اپلیکشین ایجاد می کنیم از کلاس yii\db\ActiveRecordارث می برد. این کلاس peroperty ها و method هایی داره که بسه به نیاز ما در پروژه بسیار کاربردی هست . خیلی از این پروپرتی ها و متد ها رو ما خواسته یا ناخواسته استفاده می کنیم . به عنوان مثال ما از پروپرتی های :

  1. $isNewRecord در فرم ها برای ثبت یا ویرایش مدل
  2. primaryKey در مدل برای تعریف کلید اصلی جدول

همچنین برای متد ها :

  1. save() برای ذخیره یا ویرایش رکورد جدید
  2. attributeLabels() برای مقداردهی به ستون های جدول
  3. delete() برای حذف رکورد از جدول

هدف ما در این قسمت آموزش برخی از این ویژگی ها به صورت عملی می باشد. متد attributeHints() ایجاد متن راهنما برای فرم public function attributeHints() { return [ 'title' => 'عنوان به فارسی نوشته شود', 'cat_id' => 'انتخاب گروه الزامی می باشد', 'buy_date' => 'تاریخ خرید اختیاری است', 'status' => 'وضعیت خرید خود را مشخص نمایید', 'price' => 'قیمت ها را به تومان وارد نمایید', ]; } hint-goyii.ir متد های afterSave() و beforSave() متدهایی که قبل یا پس از عملیات ثبت و یا ویرایش صدا زده می شوند public function beforeSave($insert) { if (!parent::beforeSave($insert)) { return false; } // ...custom code here... return true; } برای آشنایی با تمامی پروپرتی ها و متد های این کلاس می توانید به سایت اصلی مراجعه کنید. لینک داکیومنت این کلاس : Abstract Class yii\db\BaseActiveRecord

امیر بازدید : 75 شنبه 20 خرداد 1396 نظرات (0)

یکی دیگه از قابلیت های فریم ورک Yii در نسخه ۲ امکان نمایش یک اکشن از یک کنترلر به هنگام به روزرسانی و یا آپلود پروژه هست. قابلیت catchAll این امکان رو فراهم میکنه تا هر درخواستی ارسال میشه اپلیکیشن به صفحه مورد نظر ارجاع داده بشه و سایر صفحات نمایش داده نشود . برای مثال در کنترلر site اکشنی با نام catchall ایجاد میکنیم که متنی را به کاربر نمایش دهد مبنی بر اینکه سایت در حال به روز رسانی می باشد . سپس برای فعال کردن قابلیت جدیدمون در قسمت تنظیمات پروژه : اگر از پروژه basic استفاده می کنین در فولدر config و فایل web.php و اگر از پروژه advance استفاده میکنین در frontend فولدر config و در فایل main.php کد زیر را در متغییر $cinfig قرار دهید: 'catchAll' => [ 'site/catchall', ], توجه کنین که کد زیر در $config قرار میگیرد . همچنین به حروف بزرگ و کوچک توجه کنین.


sorting در dataProviderدر کنترلر حذف web از پروژه basic در IIS در Yii2

امیر بازدید : 96 جمعه 19 خرداد 1396 نظرات (0)

برای قرار دادن صفت و پروپرتی های اختیاری به NavBAr به عنوان مثال target=_blank جهت باز شدن لینک در تب جدید از linkOptions استفاده می کنیم: مثال در ویجت NavBar در قالب پیش فرض bootstrap فریم ورک Yii2: ['label' => 'نمایش سایت','url' => ['/site/index'], 'linkOptions' =>['target'=>'_blank']],

امیر بازدید : 80 جمعه 22 اردیبهشت 1396 نظرات (0)

یکی دیگه از دستورات جدید در پی اچ پی پنج
َArrayObject
هست
تبدیل آرایه به شی
این کلاس اجازه میده که با اشیا مانند آرایه رفتار کنیم
append()
متدی است که به آخر شی مقداری اضافه میکند:
$arrayobj = new ArrayObject(array('first','second','third'));
$arrayobj->append('fourth');
$arrayobj->append(array('five', 'six'));
var_dump($arrayobj);
خروجی
object(ArrayObject)#1 (5) {
[۰]=>
string(5) "first"
[۱]=>
string(6) "second"
[۲]=>
string(5) "third"
[۳]=>
string(6) "fourth"
[۴]=>
array(2) {
[۰]=>
string(4) "five"
[۱]=>
string(3) "six"
}
}

getIterator()
این متد یک شی ایتراتور ایجاد میکنه و شما میتونین از تکرار کننده استفاده کنین
این متد برای دریافت تکرار کننده شی از هر آرایه ای مفید است
$array = array('1' => 'one',
'۲' => 'two',
'۳' => 'three');
$arrayobject = new ArrayObject($array);
$iterator = $arrayobject->getIterator();
while($iterator->valid()) {
echo $iterator->key() . ' => ' . $iterator->current() . "\n";
$iterator->next();
}
خروجی
۱ => one
۲ => two
۳ => three

offsetExists()

این متد میتونه تشخیص بده که آفست در شی وجود داره یا نه
$arrayobj = new ArrayObject(array(‘zero’, ‘one’, ‘example’=>’e.g.’));
var_dump($arrayobj->offsetExists(1)); // true
offsetGet()
این متدبرای نمایش مقدار یک افست استفاده میشه
آفست میشه همون ایندکس تو آرایه

$arrayobj = new ArrayObject(array('zero', 7, 'example'=>'e.g.'));
var_dump($arrayobj->offsetGet(1));
var_dump($arrayobj->offsetGet('example'));
var_dump($arrayobj->offsetExists('notfound'));
خروجی
int(7)
string(4) "e.g."
bool(false)

offsetSet()
مثل آفست گت با این تفاوت که برای ست کردن ایندکس استفاده میشه


class Example {
public $property = 'prop:public';
}
$arrayobj = new ArrayObject(new Example());
$arrayobj->offsetSet(4, 'four');
$arrayobj->offsetSet('group', array('g1', 'g2'));
var_dump($arrayobj);
$arrayobj = new ArrayObject(array('zero','one'));
$arrayobj->offsetSet(null, 'last');
var_dump($arrayobj);
خروجی
object(ArrayObject)#1 (3) {
["property"]=>
string(11) "prop:public"
[۴]=>
string(4) "four"
["group"]=>
array(2) {
[۰]=>
string(2) "g1"
[۱]=>
string(2) "g2"
}
}
object(ArrayObject)#3 (3) {
[۰]=>
string(4) "zero"
[۱]=>
string(3) "one"
[۲]=>
string(4) "last"
}

offsetUnset()
این متد میتونه المنتی از ایندکس را خالی کنه در واقع حذف کنه
$arrayobj = new ArrayObject(array(0=>’zero’,2=>’two’));
$arrayobj->offsetUnset(2);
var_dump($arrayobj);
خروجی
object(ArrayObject)#1 (1) {
[۰]=>
string(4) “zero”
}
مثال


$users = new ArrayObject(array("hasin" => "hasin@pageflakes.com",
"afif" => "mayflower@phpxperts.net",
"ayesha" => "florence@pageflakes.net"));
$iterator = $users->getIterator();
while ($iterator->valid()) {
echo "{$iterator->key()}'s Email address is
{$iterator->current()}<br/>";
$iterator->next();
}
خروجی
hasin's Email address is hasin@pageflakes.com
afif's Email address is mayflower@phpxperts.net
ayesha's Email address is florence@pageflakes.net

امیر بازدید : 70 چهارشنبه 13 اردیبهشت 1396 نظرات (0)

در آموزش های قبلی برای مدیریت سطح دسترسی از rbac  استفاده کردیم .

rbac متد هایی داره که بسیار مفید و پرکاربرد هست.

در زیر به چند مورد از آن ها را اشاره می کنیم:

  1. \Yii::$app->authManager->getRolesByUser(Yii::$app->user->id)
    1. تمامی نقش های کاربر را همراه با جزئیات نمایش می دهد
  2. \Yii::$app->authManager->getPermissionsByUser($user_id)
    1. تمامی مجوز های یک کاربر را نمایش می دهد
  3. Yii::$app->user->can(‘role or permission’)
    1. همانطور که قبلا گفتیم: مشخص میکند که آیا کاربر به نقش یا مجوز نوشته شده دسترسی دارد یا خیر .نتیجه true or false

تعداد صفحات : 5

درباره ما
Profile Pic
آموزش مرحله به مرحله فریم ورک Yii
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آمار سایت
  • کل مطالب : 197
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 1
  • آی پی امروز : 34
  • آی پی دیروز : 33
  • بازدید امروز : 96
  • باردید دیروز : 95
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 231
  • بازدید ماه : 338
  • بازدید سال : 2,313
  • بازدید کلی : 26,869