https://join.slack.com/t/yii/shared_invite/MjIxMjMxMTk5MTU1LTE1MDE3MDAwMzMtM2VkMTMyMjY1Ng
sudo apt-get install php5-mysqlnd
sudo service apache2 restart
$pdo = Yii::$app->db->pdo;
$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(\PDO::ATTR_STRINGIFY_FETCHES, false);
$row = $pdo->query(
"SELECT * FROM indication"
)->fetchAll(\PDO::FETCH_NUM);
var_dump($row);die();
array (size=885)
0 =>
array (size=23)
0 => int 6
1 =>
array (size=885)
0 =>
array (size=23)
'id' => string '0' (length=1)
$ php -i | grep "Client API version"
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $
$ php -i | grep "Client API version"
Client API version => 5.5.44
Client API version => 5.5.44
\Yii::$app->db->pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
public function renderFullname() {
return $this->first_name.' '.$this->last_name;
}
/**
* @return \yii\db\ActiveQuery
*/
public static function getAuthorList() {
$model = self::find()->all();
return ArrayHelper::map($model, 'id', 'renderFullname()');
}
public static function getAuthorList() {
$model = self::find()->all();
return ArrayHelper::map($model, 'id', function($element) {
return $element->renderFullname();
});
}
подскажите, как сделать одинаковый экшин с параметрами и без?
хочу сделать что-то вроде:
public function actionIndex(){
...
}
public function actionIndex($hash){
...
}
т.е., что бы при вводе параметра index.php?hash=1 вызывался экшин actionIndex($hash)
public function actionIndex($params = []){
...
}
сделал
экшин
if($img_hash = Yii::$app->request->get('img_hash')){
$file = new File();
$file->outputImageFileByHash($img_hash );
}
компонент
public function outputImageFileByHash($hash)
{
...
return readfile(blah-blah-path-to-image);
}
изображение выводится чотко, но если попытаться открыть само изображение, то на странице появляется кучу иероглифов. как это фиксануть можно?
header('Content-Type: image/png');
$sText = EMTypograph::fast_apply($sText, $aOptions);
EMTypograph::fast_apply("Текст для типографирования.", array(
'Text.paragraphs'=>'off',
'OptAlign.oa_oquote'=>'off'
));
$aOptions = [
'Text.breakline' => 'off',
'OptAlign.oa_oquote' => 'off',
'OptAlign.oa_oquote_extra' => 'off',
'OptAlign.oa_obracket_coma' => 'off',
'Nobr.spaces_nobr_in_surname_abbr' => 'off',
];
//$sText = EMTypograph::fast_apply($sText, $aOptions);
$EMTypograph = new EMTypograph();
$EMTypograph->set_text($sText);
$EMTypograph->setup($aOptions);
$sText = $EMTypograph->apply();
теже яйца
public function parseRequest($request)
{
$domain = $request->getServerName();
if($domain != getenv('app.site.url')) {
$res = explode('.', $domain, 2);
$subDomain = $res[0];
$city = City::find()->where(['code'=>$subDomain])->count();
if (!$city)
throw new NotFoundHttpException('City not found');
$request->setQueryParams(array_merge($request->getQueryParams(), ['city' => $subDomain,]));
}
return parent::parseRequest($request);
}
@maxyc проще всего мне так кажется, сделать контроллер с экшинами городов и сохранять в какую-нибудь сессию город в них. потом в роутинге в конфиге прописать что-нибудь вроде
'http://<login:[\w\-]+>.example.com/<action:\w+>' => 'profile/<action>'
при загрузке самой страницы брать из сессии данные и как-то делать уже редирект на нужный тебе субдомен
красава! и в кусты
не вижу смысла что то доказывать.