I'm using KCFinder from Iutbay/KCFinder with CKEditor from 2amigos. But KCFinder not work properly, it always show message "You don't have permission...."
I've read both of documentation but still not work.
this is my _view following iutbay's documentation:
use dosamigos\ckeditor\CKEditor;
use iutbay\yii2kcfinder\KCFinderInputWidget;
use iutbay\yii2kcfinder\KCFinder;
$kcfOptions = array_merge(KCFinder::$kcfDefaultOptions, [
'uploadURL' => Yii::getAlias('#web').'/upload',
'disabled'=> false,
'access' => [
'files' => [
'upload' => true,
'delete' => true,
'copy' => true,
'move' => true,
'rename' => true,
],
'dirs' => [
'create' => true,
'delete' => true,
'rename' => true,
],
],
]);
// Set kcfinder session options
Yii::$app->session->set('KCFINDER', $kcfOptions);
echo $form->field($model, 'images')->widget(KCFinderInputWidget::className(), [
'multiple' => true,
]);
1- you does not have permission to upload picture into destination folder (upload)
give full permission to (upload) folder, you can either do using your web server or you can using this command
sudo chmod -R 0777 kcfinder/upload
2- go to the kcfinder folder and then find (config.php) find
'disabled' => true
change it to
'disabled' => false
Related
I need configure my Yii2 UrlManager rules like this:
change http://domain/site/action to http://domain/action
change http://domain/module/default to http://domain/module
so far what I have done:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<module:(!site)>' => '<module>/default',
'<action:\w+>' => 'site/<action>',
],
],
when I trying access module it return 404. But when I remove '<action:\w+>' => 'site/<action>', access module again will show as module/default page. So how to solve this?
You can try this code
'<action:(about|contact)>' => 'site/<action>',
insted of this
'<action:\w+>' => 'site/<action>',
and it will not work then change sequence of rules
'rules' => [
'<action:\w+>' => 'site/<action>', <-----------it will be first
'<module:(!site)>' => '<module>/default',
],
I'm trying to remove action name from url. 'post/view' to 'page' using urlManager but it's not working
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Hide index.php
'showScriptName' => false,
// Use pretty URLs
'enablePrettyUrl' => true,
'rules' => [
//'<view:\w+>' => 'post/<alias>',
//'<alias:view>' => 'post/<alias>',
'page' => 'post/view',
],
],
Change your config to include the id:
'page/<id>' => 'post/view'
Allows you to use urls like this:
localhost:8585/yii2basic/wfp/web/page/PGr1mtIkAE
You can't really do this:
localhost:8585/yii2basic/wfp/web/post/id=PGr1mtIkAE
I have the following configuration in the web.php file to force users to login first before using the app.
'as access' => [
'class' => \yii\filters\AccessControl::className(), //AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'actions' => ['logout', 'index'], // add all actions to take guest to login page
'allow' => true,
'roles' => ['#'],
],
],
],
However I get a Forbidden (#403) error in the http://localhost/yii2/debug/default/toolbar?tag=58759099581f2
How to allow in that in the rules?
First of all, this config is incorrect. This part:
[
'actions' => ['logout', 'index'], // add all actions to take guest to login page
'allow' => true,
'roles' => ['#'],
],
will additionally allow only logout and index actions to authenticated users. It needs to be changed to:
[
'allow' => true,
'roles' => ['#'],
],
to allow access to the entire site. Then you can customize access further in AccessControl or actions of specific controllers. So debug is not the only forbidden page in your case.
I think it was copy pasted from this answer to related question here on SO.
And by the way debug is already enabled in application config in basic app:
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
// uncomment the following to add your IP if you are not connecting from localhost.
//'allowedIPs' => ['127.0.0.1', '::1'],
];
// Below Gii is enabled too, code is omitted for brevity
}
So when user is authenticated, you will have access to debug module without any problems.
Note: With this configuration login and error actions of every controller are allowed to non-authenticated users. Be careful with that. There is a chance of actions with similar names exist in other controllers.
Update: Actually you can go further and make this solution more flexible with $matchCallback:
'as access' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
[
'matchCallback' => function ($rule, $action) {
$allowedControllers = [
'debug/default',
];
$allowedActions = [
'site/login',
'site/error',
];
$isAllowedController = in_array($action->controller->uniqueId, $allowedControllers);
$isAllowedAction = in_array($action->uniqueId, $allowedActions);
return $isAllowedController || $isAllowedAction;
},
'allow' => true,
],
[
'allow' => true,
'roles' => ['#'],
],
],
],
Place fully allowed controllers in $allowedControllers list (prefix it with module name if it's inside a module) to allow them completetely (allow all actions).
Place allowed actions in $allowedActions list (prefix it with controller name and with module name if it belongs to a module).
That way you can have full access to debug module on local server on every page (including login and error) which can be useful.
Also this prevents from action names coincidence from different modules / controllers.
You have to enable the toolbar action web.php config file:
'rules' => [
[
'actions' => ['login', 'error', 'toolbar'],
'allow' => true,
],
I use export menu on my yii2 project. I download it from demos.krajee.com. I have been success to use it, but I want to edit content like in pdf, so it have title/header or footer or page number. How to make it?
There are at least two ways to do that.
For example you can set it as default setting in
Yii::$container->set('kartik\grid\GridView', [
'summary' => "Showing {begin} - {end} from {totalCount} records",
'captionOptions' => ['style' => 'font-size:0em;'],
'panel' => [
'heading' => false,
'before' => '{summary}',
'after' => '{pager}',
'footer' => false,
],
'hover' => true,
'toolbar' => [
'{export}',
'{toggleData}',
],
'export' =>[
'showConfirmAlert' => false,
],
'exportConfig' => [
kartik\grid\GridView::PDF => [
'label' => 'Save as PDF',
'config' => [
'methods' => [
'SetHeader' => ['Header'],
'SetFooter' => ['Footer whatever: ' . strftime("%c") . '||Page {PAGENO}'],
]
],
],
],
...
Or pass the settings individually to each widget in every view.
You can use methods in wrapper http://demos.krajee.com/mpdf#settings (look for methods) or directly from mpdf class if you need something more complicated.
I am facing a grate problem in my project.
When i browse url with my project name than it's show folders, but i don't want to show those folder i want to show direct my web site, like 'localhost/mywebsite/admin'.
I also try to solve this problem to add my backend/config/main.php file
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => 'false'
],
but it does not work.
Please help me to solve this problem.
Customize URL:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => true,
'rules' => [
'<_c:[\w\-]+>' => '<_c>/index',
'<_c:[\w\-]+>/<_a:[\w\-]+>' => '<_c>/<_a>',
'<_c:[\w\-]+>/<_a:[\w\-]+>/<id:\d+>' => '<_c>/<_a>',
],
],
In apache.conf input DocumentRoot /var/www/backend/web.