Quantcast
Channel: Yii Framework Forum
Viewing all 18717 articles
Browse latest View live

Query String w WhGridView

$
0
0
Witam,

niedawno w swoich tabelach na filtrach, zacząłem używać takiej biblioteki jak: bootstrap-multiselect
Wszystko działało do czasu aż nie zacząłem używać
enableClickableOptGroups: true,

Problem polegał na tym, że filtr nie reagował na akcję zmiany parametru (zgaduję, że dlatego, że nie ma 'value').
Lukę chcę zapełnić czymś takim:
onChange: function(){
			jQuery('#wniosek-grid').yiiGridView('update');	
}

Problem polega na tym, że odpala się rzekomy update, jednak żaden z filtrów nie zostaje zaaplikowany.
Tutaj moje pytanie jak zasymulować przekazanie parametrów filtra, które wysyłane są jako 'Query String Parameter'.

Yii2 CLI SwiftMailer using sendmail instead of mail()

$
0
0
When running in CLI by crontab i get the following error:
"sh: sendmail: command not found"

When i run in SSH the same commando it just works. So i tryed forcing "Swift_MailTransport" by doing this before my code starts:
        \Yii::$app->setComponents([
            'mailer' => [
                'class' => 'yii\swiftmailer\Mailer',
                'enableSwiftMailerLogging' => true,
                'useFileTransport' => false,
                'transport' => [
                    'class' => 'Swift_MailTransport',
                ]
            ],
        ]);


And the code (simple)
    public function actionTest()
    {
        \Yii::$app->mailer->compose()
            ->setFrom('test2@example.com')
            ->setTo('test1@example.com')
            ->setSubject('Message subject')
            ->setTextBody('Plain text content')
            ->setHtmlBody('<b>HTML content</b>')
            ->send();
    }



Does anyone know what i am doing wrong?

DB mit Login verknüpfen

$
0
0
Hey Leute,

ich mache zurzeit ein Praktikum als Softwareprogrammierer und bin grad dabei mich mit Yii auseinander zu setzen. Bin soweit, dass ich meine erste Datenbank erstellt habe und sie mir auch anzeigen lassen kann auf der vorprogrammierten Yii-Testseite. Soweit so gut. Mein Vorhaben ist jetzt, dass, wenn sich "jemand" über den E-Mail Login einloggt, einzelne Informationen über diesen "jemand" angezeigt werden.
Kleines Beispiel:

User1 loggt sich mit example@email.com seinem jeweiligen Password ein und daraufhin werden dann zb. Alter, Beruf usw von User1 angezeigt.
Das ganze sollte dann auch für mehrer User sein, wäre das dann auch einstellbar?

Ich hoffe ihr versteht mein Anliegen


MfG Nasir21

Call another controller's action

$
0
0

I have one question:
Is it possible to call another controlerr's action from actual controller?

example:
class actualControler extends CController {

public function actionOne() {

$fromAnother = <here I want to call anoterAction>;

$this->render('one',array('fromAnother'=>$fromAnother));

}

}

class anotherController extends CController {

public function anotherAction() {

// do something and return it

}

}




I want to call anoterController anotherAction from actualController actionOne
what do you think? is it possible?

both of controllers are in other files, of course ;-)

enablePrettyUrl Probleme beim debuggen

$
0
0
Hallo,

ich habe im UrlManager den Parameter "enablePrettyUrl" auf true gesetzt, um sprechende URL's zubekommen, das hat auch alles wunderbar geklappt. Jetzt habe ich unter Eclipse Xdebug hinzugefügt - und nun löst Yii nicht mehr die URL's auf. In der Firebug Console bekomme ich den Fehler: "http**/debug/default/toolbar?tag=578f3ad19eaf0" und TypeError: toolbarEl is null

Setzte ich "enablePrettyUrl" auf fasle, ist der Console Fehler weg und Yii kann die Url's auflösen.

Hat jemand eine Idee - was das Problem ist?

Danke

bizrule and checkAccess return false

$
0
0
good night, well, the problem is that I have a bizrule that is
$bizRule='return Yii::app()->user->id==$params["id_usuario"];';

and I do a checkAccess to see if the user can edit the post.
public function actionEditarComentario($id)
	{
         $model=$this->loadModelComentario($id);
         if (Yii::app()->user->checkAccess('actualizaPost',array('id_usuario'=>$model->id_usuario)))
	    {
              //code to edit post
            }
            //code if cant edit post
        }

and this isnt working, first i try to use accesRules doing this
                             array('allow', 
				'actions'=>array('EditarComentario'),
				'roles'=>array('actualizaPost'=>array('id_usuario'=>$model->id_usuario)),

neither work, the thing is that I do this to see if something is wrong:
            echo $model->id_usuario;
	    echo "</br>";
	    echo Yii::app()->user->id;

I get that the ids are identically, also the user have that role, so i dont have any idea about what im doing wrong, please i need a help whit this.

ps:sorry for my english.




<---------------------------------updates------------------------------------------>

I was able to get this work, in my case the problem was that role hasn't assign the task "actualizaTuPropioPost" that is child "actualizaPost", so to everyone who have the same problem or any problem with bizrule and roles and checkacces, the correct form, at least to me, is this:
//create roles, task, operation
$auth=Yii::app()->authManager;
$auth->createOperation('actualizaPost','Actualiza un publicacion');

$bizRule='return Yii::app()->user->id==$params["id_usuario"];';
$task=$auth->createTask('ActualizaTuPropioPost','actualiza una publicacion propia',$bizRule);
$task->addChild('actualizaPost');

$role=$auth->createRole('lector');
$role->addChild('ActualizaTuPropioPost');

//controller
public function actionEditarComentario($id)
	{
         $model=$this->loadModelComentario($id);
         if (Yii::app()->user->checkAccess('actualizaPost',array('id_usuario'=>$model->id_usuario)))
	    {
              //code to edit post
            }
            //code if cant edit post
        }

Yii2 Widgets Extension

$
0
0
This is a discussion forum for the yii2-widgets extension. The extension aims to extend widgets within Yii Framework 2 to offer extended functionality available in Bootstrap. You can view demo and documentation of this extension here. The widgets are classified broadly under
  • Forms/Inputs:
    • Various additions to ActiveForm and ActiveField
    • Select2
    • Typeahead
    • DatePicker
    • FileInput

  • Navigation:
    • Affix
    • Sidenav

Disable sessions and cache for some controllers

$
0
0
Hello! There is a easy way to disable cache and sessions using CMemCache configuration only for some controllers?

We come to a problem where we have an UploadController and we detected that is using sessions and memcache when obviously isn't needed.

A possible solution would be disabling session autostart and starting it manually, but I'm trying to figure it our if there is some other solution to that. (Maybe a conditional in the config file?)

Thank you!

Campo de busqueda con NavBar

$
0
0
Que tal amigo quiero tener en mi menú un campo de búsqueda con NavBar, como el de esta pagina http://demos.krajee.com/widgets alguien me puede dar una mano.

Este es el menu

NavBar::begin(['brandLabel' => 'NavBar Test']);
echo Nav::widget([
    'items' => [
        ['label' => 'Home', 'url' => ['/site/index']],
        ['label' => 'About', 'url' => ['/site/about']],
    ],
    'options' => ['class' => 'navbar-nav'],
]);
NavBar::end();

CGridview help me!

$
0
0
How to display data from multiple models?
: Captura.JPG

ImageMagick

$
0
0
Hi,

I'm hoping there are some ImageMagick ninjas out there. We've been using ImageMagick on Yii using php5.4 successfully (well successfully in terms of what we want it for). We've updated the backend to now use php7. Has anyone had a experience of imagemagick in both php5.4 and then php7? I'm happy to go into more detail if anyone thinks they might be able to help. I've attached a couple of "before & after" images to illustrate the issue.

Thanks in advance,

Ross

  • : fixed.png
  • : not-fixed.png

display index using bootstrap collapse widget

$
0
0
I've tried displaying my Faq entries using kartik's gridview and expand column but I couldn't get the expanded row's data to wrap so I'm trying to use the collapse widget to display faq answers to the questions when clicked on. What am I doing wrong here?

I get error:
exception 'yii\base\InvalidConfigException' with message 'The 'label' option is required.' in /home/drcarr/public_html/vendor/yiisoft/yii2-bootstrap/Collapse.php:107
Stack trace:
#0 /home/drcarr/public_html/vendor/yiisoft/yii2-bootstrap/Collapse.php(91): yii\bootstrap\Collapse->renderItems()
#1 /home/drcarr/public_html/vendor/yiisoft/yii2/base/Widget.php(102): yii\bootstrap\Collapse->run()
#2 /home/drcarr/public_html/frontend/views/faq/index.php(25): yii\base\Widget::widget(Array)
#3 /home/drcarr/public_html/vendor/yiisoft/yii2/base/View.php(326): require('/home/drcarr/pu...')
#4 /home/drcarr/public_html/vendor/yiisoft/yii2/base/View.php(248): yii\base\View->renderPhpFile('/home/drcarr/pu...', Array)
#5 /home/drcarr/public_html/vendor/yiisoft/yii2/base/View.php(150): yii\base\View->renderFile('/home/drcarr/pu...', Array, Object(frontend\controllers\FaqController))
#6 /home/drcarr/public_html/vendor/yiisoft/yii2/base/Controller.php(378): yii\base\View->render('index', Array, Object(frontend\controllers\FaqController))
#7 /home/drcarr/public_html/frontend/controllers/FaqController.php(44): yii\base\Controller->render('index', Array)
#8 [internal function]: frontend\controllers\FaqController->actionIndex()
#9 /home/drcarr/public_html/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array)
#10 /home/drcarr/public_html/vendor/yiisoft/yii2/base/Controller.php(154): yii\base\InlineAction->runWithParams(Array)
#11 /home/drcarr/public_html/vendor/yiisoft/yii2/base/Module.php(454): yii\base\Controller->runAction('index', Array)
#12 /home/drcarr/public_html/vendor/yiisoft/yii2/web/Application.php(100): yii\base\Module->runAction('faq/index', Array)
#13 /home/drcarr/public_html/vendor/yiisoft/yii2/base/Application.php(375): yii\web\Application->handleRequest(Object(yii\web\Request))
#14 /home/drcarr/public_html/frontend/web/index.php(18): yii\base\Application->run()
#15 {main}

index.php

$faqs = [];

foreach ($dataProvider as $faq => $faqs[]) {
    $faqs[] = [
        'label' => $model->faq_question,
        'content' => $model->faq_answer,
    ];
}
?>

<div class="site-about">
    <h1><?= Html::encode($this->title) ?></h1>
    
   <?= Collapse::widget(['items'=> $faqs]);
    ?>

</div>




controller:
public function actionIndex()
    {
        $searchModel = new FaqSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        
        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }


I also tried adding an array to the model, but am not really sure if/how to use it in this instance:
public function getFaqs()
    {
        return ArrayHelper::map(Faq::find->all(),'id','faq_question','faq_answer');
    }

Mail always saved as files but not sent despite useFileTransport=false

$
0
0
Hi,

I am trying to send mails from production site but mails always arrive in runtime/mail folder

     public function actionTestmail()
     {
       Yii::$app
            ->mailer
            ->compose(['html' => 'courriel-test-html']          
            )
            ->setFrom("user@domain.fr") //->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . ' robot'])
            ->setTo('me@mydomain.com')
            ->setSubject('Email for test purpose')
            ->send();
         return $this->render('index');
     }


<?php

index.php
// comment out the following two lines when deployed to production
//defined('YII_DEBUG') or define('YII_DEBUG', true);
//defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();


config/web.php


'Smtpmail'=>array(
            'class'=>'application.extensions.smtpmail.PHPMailer',
            'useFileTransport' => false,
            'Host'=>"fox.o2switch.net",
            'Username'=>'user@domain.fr',//a valid account 
            'Password'=>'******',//the actual password for the account above
            'Mailer'=>'smtp',
            'Port'=>587,
            'SMTPAuth'=>true, 
            'SMTPSecure' => 'tls',
        ),


or
  'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'useFileTransport' => false,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'fox.o2switch.net',
            'username' => 'user@domain.fr',
            'password' => '*******',
            'port' => '25',
           // 'encryption' => 'tls',
        ],
    ],


In both cases the result is the same, a file in runtime/mail but no mail actually sent

Absen Baru

$
0
0
Gan.
Absen disini.
saya mau lihat seberapa users forum ini yang masih aktif.
dalam 2 Minggu lagi akan saya cek.
Mungkin yang paling aktif saya akan mintakan ke bro qiang biar jadi leader forum, gantiin saya.
mau pensiun saya bos, real life really - really get sucker, hahahaha


Pamit,

best regards

Ayuda con una consulta en Yii

$
0
0
Buenas, soy practicamente nuevo en Yii. y estoy tratando de hacer una llevar una gran consulta SQL a Yii, para generar una vista pero tengo muchas dudas acerca de; si me podrian guiar seria de gran ayuda:

esta es la consulta que tengo:

$consulta=Nphojint::model()->findBySql(
'SELECT A.*,to_char(m.fecinienc,\'05/10/2016\') as fechaenc
FROM (
SELECT "SIMA010".fc_ultimo_cargo(a.codemp,\'05/10/2016\') AS nomcar,
a.nacemp AS nacemp,
a.codemp AS codemp,
a.cedemp AS cedemp,
a.nomemp AS nomemp,
c.codnom AS codnom,
f.tipnom AS tipnom,
f.conemp AS conemp,
c.nomnom AS nomnom,
e.suecar AS sueldocargo,
(e.suecar*12) AS sueldocargoanual,
coalesce((SELECT b.suecar AS suecarenc
FROM "SIMA010".nphojint a, "SIMA010".npcargos b
WHERE trim(a.codcarenc) = trim(b.codcar) AND trim(a.codemp) = trim(\'0381\')),0) AS suecarenc,
coalesce((SELECT (b.suecar*12) AS suecarencanual
FROM "SIMA010".nphojint a, "SIMA010".npcargos b
WHERE trim(a.codcarenc) = trim(b.codcar) AND trim(a.codemp) = trim(\'0381\')),0) AS suecarencanual,
(SELECT coalesce((unitrib*3),0) AS primahogar
FROM "SIMA010".npdefgen ) AS primahogar,
coalesce((SELECT coalesce((a.unitrib*4),0) AS primamerito
FROM "SIMA010".npdefgen a, "SIMA010".npasiconemp b
WHERE b.codcon = \'005\' and trim(b.codemp) = trim(\'0381\')),0) AS primamerito,
coalesce((SELECT (b.monto*2) AS primarespon
FROM "SIMA010".npasiconemp b
WHERE b.codcon = \'072\' and trim(b.codemp) = trim(\'0381\')),0) AS primarespon,
(SELECT coalesce((a.unitrib*9),0) AS primatrans
FROM "SIMA010".npdefgen a, "SIMA010".npasiconemp b
WHERE b.codcon = \'064\' and trim(b.codemp) = trim(\'0381\')) AS primatrans,
(SELECT coalesce(sum((a.unitrib*1.5)),0) AS primahijos
FROM "SIMA010".npdefgen a, "SIMA010".npasiconemp b, "SIMA010".npinffam c
WHERE trim(b.codemp) = trim(c.codemp) and b.codcon = \'004\' and trim(b.codemp) = trim(\'0381\') and EXTRACT(YEAR FROM(age(c.fecnac))) < \'19\' ) AS primahijos,
(SELECT coalesce(sum(monto),0) AS primasantyprof
FROM "SIMA010".npasiconemp
WHERE trim(codemp) = trim(\'0381\') AND codcon in (\'062\',\'063\')) AS primasantyprof,
(SELECT coalesce(sum(monto),0) AS compensacionsalarial
FROM "SIMA010".npasiconemp
WHERE trim(codemp) = trim(\'0381\') AND codcon in (\'084\',\'086\')) AS compensacionsalarial,
(SELECT ((unitrib * 1.5)*30) AS cestaticket
FROM "SIMA010".npdefgen) AS cestaticket,
(SELECT (((unitrib * 1.5)*30)*12) AS cestaticketanual
FROM "SIMA010".npdefgen) AS cestaticketanual,
(SELECT valor1 AS subvencion
FROM "SIMA010".npdefvar
WHERE TRIM(codvar) = \'SVA\') AS subvencion,
(SELECT (valor1*12) AS subvencionanual
FROM "SIMA010".npdefvar
WHERE TRIM(codvar) = \'SVA\') AS subvencionanual,
(e.suecar*2) AS bonincahoanual,
coalesce((SELECT (b.suecar*2) AS bonincahoanualenc
FROM "SIMA010".nphojint a, "SIMA010".npcargos b
WHERE trim(a.codcarenc) = trim(b.codcar) AND trim(a.codemp) = trim(\'0381\')),0) AS bonincahoanualenc,
((e.suecar/30)*45) AS bonoperma,
coalesce((SELECT ((b.suecar/30)*45) AS bonopermaenc
FROM "SIMA010".nphojint a, "SIMA010".npcargos b
WHERE trim(a.codcarenc) = trim(b.codcar) AND trim(a.codemp) = trim(\'0381\')),0) AS bonopermaenc,
(((e.suecar/30)*45)*2) AS bonopermaanual,
coalesce((SELECT (((b.suecar/30)*45)*2) AS bonopermaanualenc
FROM "SIMA010".nphojint a, "SIMA010".npcargos b
WHERE trim(a.codcarenc) = trim(b.codcar) AND trim(a.codemp) = trim(\'0381\')),0) AS bonopermaanualenc,
(to_char(a.fecing,\'05/10/2016\')) AS fecing,
a.fecing AS fecing2,
"SIMA010".fc_cargo_encargado(trim(\'0381\'),\'05/10/2016\') AS nomcarenc,
a.staenc AS staenc,
b.desniv AS desniv
FROM "SIMA010".nphojint a, "SIMA010".npestorg b , "SIMA010".npasicaremp c, "SIMA010".npcargos e, "SIMA010".npnomina f
WHERE trim(a.codemp) = trim(\'0381\')
and trim(a.codemp) = trim(c.codemp)
and trim(a.codniv) = trim(b.codniv)
and trim(c.codcar) = trim(e.codcar)
and trim(c.codnom) = trim(f.codnom)
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35 ) AS A
LEFT JOIN "SIMA010".nphisenc m ON trim(A.codemp) = trim(m.codemp)
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36'
);

tengo una relacion en el modelo Nphojint:

'relacion'=>array(self::HAS_ONE,'Npasicaremp','codemp'),

cuando voy a mostrarlo en la vista:
echo $consulta->codemp;
echo $consulta->relacion->codemp;

Me arroja el siguiente error:

Invalid argument supplied for foreach()

{
// determine the primary key value
if(is_string($this->_pkAlias)) // single key
{
if(isset($row[$this->_pkAlias]))
$pk=$row[$this->_pkAlias];
else // no matching related objects
return null;
}
else // is_array, composite key
{
$pk=array();
foreach($this->_pkAlias as $name=>$alias)
{
if(isset($row[$alias]))
$pk[$name]=$row[$alias];
else // no matching related objects
return null;
}
$pk=serialize($pk);
}

// retrieve or populate the record according to the primary key value
if(isset($this->records[$pk]))
$record=$this->records[$pk];

Quill

$
0
0
Yii 2 implementation of Quill, modern WYSIWYG editor.

Quill
You can find Quill at http://quilljs.com


yii2-quill

Installation

Easiest way to install this extension is through the Composer.
Add in your composer.json:
"bizley/quill": "*"

or run console command:
php composer.phar require bizley/quill "*"


Usage

Use it as an active field extension
<?= $form->field($model, $attribute)->widget(bizley\quill\Quill::className(), []) ?>


or as a standalone widget
<?= bizley\quill\Quill::widget(['name' => 'editor']) ?>


Parameters
  • theme string default 'bootstrap'
    false or null for Quill's default theme with quill.base.css,
    'snow' for Quill's snow theme with quill.snow.css,
    'bootstrap' for snow theme with editor wrapped in Bootstrap's panel
    You can set theme in configs array instead but this is the only way to set 'bootstrap' theme.
    See Quill's documentation for themes.
  • toolbar string or array default 'full'
    In case of string:
    false or null to switch toolbar off,
    'full' for full Quill's toolbar as seen here,
    'basic' for few basic toolbar options,
    anything else for single button (see below).
    In case of array:
    string element for single button (see below),
    array element for buttons grouped together - every element of this array should be string (a single button).
  • configs array default []
    Array of Quill's configuration. This is the equivalent of Quill's configs variable


Toolbar
Quill allows you to add your own HTML toolbar for the editor. This is very flexible solution but in most cases you just need to get few standard buttons without worrying about the HTML tags and where and how to properly place them.
With yii2-quill it is quite simple - there are predefined buttons you can use:

  • '|' separator,
  • 'b' bold,
  • 'i' italic,
  • 'u' underline,
  • 's' strikethrough,
  • 'font' font family,
  • 'size' font size,
  • 'textColor' font colour,
  • 'backColor' background colour,
  • 'ol' ordered list,
  • 'ul' bullet list,
  • 'alignment' text alignment,
  • 'link' link,
  • 'image' image


With toolbar parameter set to 'full' all these buttons are added. 'basic' gives you only 'b', 'i', 'u', 's', 'ol', 'ul', 'alignment', 'link'.

In case you want totally different set of buttons you can set them like:
'toolbar' => ['b', 'i', 'u', '|', 'font', '|', 'alignment'],


If you want to group some buttons together use nested arrays:
'toolbar' => [['b', 'i', 'u'], ['font', 'alignment']],


And don't worry about adding modules in configs for 'link' and 'image' options - this is done automatically.

You may wonder what to do in case of adding some button that is not listed here - simply just put the HTML code of the button inside the toolbar array. And there is still this option to create separate toolbar from the scratch - you can add toolbar module with its container's ID in the configs array as seen here.

GitHub repo

https://github.com/bizley-code/yii2-quill

utilizas yii 1.* o utilizas 2.* en español

$
0
0
Porqué usas el framework? Que versión utilizas? Que te gusta, que te desagrada son cosas que me interezaria saber de la comunidad. A mi realmente me gusta el framework en su versión 2 la versión 1 me desagrada XD y creo que muchas personas se quedan con la impresión de esa versión :/. Si no te gusta, me gustaría saber porque?

Ver ErrorException en yii 2.0.9

$
0
0
Que tal amigos estaba trabajando con yii 2.0.6 en modo desarrollo y cuando tenia un error por ejemplo cuando me faltaba colocar punto y como(;) en la pantalla me salia los errores PHP Parse Error – yii\base\ErrorException.., empece a trabajar con yii 2.0.9 en modo desarrollo y ahora solo me bota un mensaje que dice
Error (#4)
Hubo un error interno del servidor.

Como hago para habilitar los errores PHP Parse Error – yii\base\ErrorException

How to install Googlecalendar?

$
0
0
I put files from downloaded googlecalendar extension archive in demo site blog from yiiframework. Css from archive i add in root of the site blog in exsising directory, for directory jquery from archive i add new dir in root of the site directory, view.php from archive i added in created directory views in root too. But, when i enter in the adres bar mysite.ru\googlecalendar.php, i got an error:
Fatal error: Class 'Yii' not found in C:\OpenServer\domains\www.blog.ru\googlecalendar.php on line 31, on line 31 in this file write this code: Yii::import('system.web.widgets.CWidget');. What i doing wrong?

Small Business Website Design & Development Services

$
0
0
OptiSol Business Solutions is located in Chennai, India and offers Website Design and Development services.

We specialize in web development services including web design, e-commerce website, e-commerce customization, mobile websites, and much more! We use powerful and easy to use CMS for our informational and e-commerce websites.

1. PHP / Yii Framework / Cakephp
2. Java
3. Wordpress
4. Drupal
5. Mobile (iOS/Android)

To learn more about our web services and how we can help, please visit us at http://www.optisolbusiness.com/technology/php-development/yii-development
Viewing all 18717 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>