1) descargar el server de pocketmine e instalar con el wizard
http://www.pocketmine.net/
2) descargar los fuentes que nos serviran para extender nuestras clases
https://github.com/pmmp/pocketmine-mp
En ECLIPSE:
3) crear un proyecto PHP
4) agregar los fuentes para extender nuestras clases
click derecho ->include parh->configure path
en la pestaña de libraries, click en el boton "add external source folder"
y seleccionar la carpeta entera extraida en el paso (2) o la subcarpeta "src"
5) crear nuestra carpeta source
click derecho ->build path->new source folder
llamarla "src" .
6) en src crear nuestra estructura de directorios (p.e: si es ar\com\cmd\mc\bugreport crear esas 5 carpetas)
7) crear nuestro archivo main , crearemos un archivo llamado BugReport.php
<?php
namespace ar\com\cmd\mc\bugreport;
use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
class BugReport extends PluginBase{
public function onEnable(){
$this->getLogger()->info("onEnable() has been called!");
}
public function onDisable(){
$this->getLogger()->info("onDisable() has been called!");
}
public function onLoad(){
$this->getLogger()->info("onLoad() has been called!");
}
public function onCommand(CommandSender $sender, Command $command, $label, array $args){
$commandName = $command->getName();
$this->getLogger()->info("commando: ".$commandName);
if($commandName === "bugs"){
return true;
}
return false;
}
}
8) en la raiz del proyecto crear el archivo plugin.yml
name: BugReport
main: ar\com\cmd\mc\bugreport\BugReport
version: 1.0.0
api: 1.0.0
commands:
bugs:
description: show latest bugs reported
usage: /bugs <limit>
9) exportar el proyecto
click derecho-> export
seleccionar PHP/Phar export
y en la sgt pantalla seleccionar como destino la carpeta donde instalamos el pocket mine server (paso #1)
en mi caso será
C:\Users\ibazan\PocketMine-MP\plugins\bugreport.phar
10) si el server esta ejecutandose, recargarlo con el comando:
reload
fuente:
https://github.com/PocketMine/Documentation/wiki/Plugin-Tutorial
yii2 file input kartik widget
ejecutar este par de sentencias:
composer require kartik-v/bootstrap-fileinput "@dev"
composer require kartik-v/yii2-widget-fileinput "@dev"
la idea es poder guardar una imagen en una carpeta del sitio:
nuestro modelo tiene una campo que guarda solo el nombre del archivo: $image_name
vamos a crear un campo virtual llamado $image que hace referencia al archivo de imagen que se envia desde el formulario:
class Notifications extends \yii\db\ActiveRecord
{
var $image;
para usarlo en una vista:
use kartik\file\FileInput;
<?= $form->field($model, 'image')->widget(FileInput::classname(), [
'options' => ['accept' => 'image/*'],
'pluginOptions'=>['allowedFileExtensions'=>['jpg','gif','png'],'showUpload' => false,],
]); ?>
en el controller:
use yii\web\UploadedFile;
public function actionCreate() {
$model = new Notifications ();
if ($model->load ( Yii::$app->request->post () )) {
$image = UploadedFile::getInstance ( $model, 'image' );
if (!is_null( $image )) {
$model->full_image_url = $image->name;
$ext = end ( (explode ( ".", $image->name )) );
// generate a unique file name to prevent duplicate filenames
$model->full_image_url = Yii::$app->security->generateRandomString () . ".{$ext}";
// the path to save file, you can set an uploadPath
$uploadPath = Yii::$app->basePath . '/upload-folder/';
$path = $uploadPath. $model->image_name;
$image->saveAs ( $path );
}
if ($model->save ()) {
return $this->redirect ( [
'view',
'id' => $model->id
] );
}
}
fuente:
https://github.com/kartik-v/yii2-widget-fileinput
composer require kartik-v/bootstrap-fileinput "@dev"
composer require kartik-v/yii2-widget-fileinput "@dev"
la idea es poder guardar una imagen en una carpeta del sitio:
nuestro modelo tiene una campo que guarda solo el nombre del archivo: $image_name
vamos a crear un campo virtual llamado $image que hace referencia al archivo de imagen que se envia desde el formulario:
class Notifications extends \yii\db\ActiveRecord
{
var $image;
para usarlo en una vista:
use kartik\file\FileInput;
<?= $form->field($model, 'image')->widget(FileInput::classname(), [
'options' => ['accept' => 'image/*'],
'pluginOptions'=>['allowedFileExtensions'=>['jpg','gif','png'],'showUpload' => false,],
]); ?>
en el controller:
use yii\web\UploadedFile;
public function actionCreate() {
$model = new Notifications ();
if ($model->load ( Yii::$app->request->post () )) {
$image = UploadedFile::getInstance ( $model, 'image' );
if (!is_null( $image )) {
$model->full_image_url = $image->name;
$ext = end ( (explode ( ".", $image->name )) );
// generate a unique file name to prevent duplicate filenames
$model->full_image_url = Yii::$app->security->generateRandomString () . ".{$ext}";
// the path to save file, you can set an uploadPath
$uploadPath = Yii::$app->basePath . '/upload-folder/';
$path = $uploadPath. $model->image_name;
$image->saveAs ( $path );
}
if ($model->save ()) {
return $this->redirect ( [
'view',
'id' => $model->id
] );
}
}
fuente:
https://github.com/kartik-v/yii2-widget-fileinput
yii2 materialize
1) usando widget de wiisoft
fuente:
https://github.com/wiisoft/yii2-materialize
desde consola y dentro de la carpeta de tu proyecto recientemente creado ejecutar la sgt sentencia
fuente:
https://github.com/wiisoft/yii2-materialize
desde consola y dentro de la carpeta de tu proyecto recientemente creado ejecutar la sgt sentencia
composer require --prefer-dist wiisoft/yii2-materialize "*"
listo, ahora se debe cambiar hacer los sgts cambios en views/layouts/main.php
use wii\materialize\Nav;
use wii\materialize\NavBar;
<body>
<?php $this->beginBody() ?>
<header>
<?php
NavBar::begin([...
...
NavBar::end();
?>
</header>
<main>
<div class="container">
...
<?= $content ?>
</div>
</main>
<footer class="page-footer">
<div class="container">
...
</div>
...
</footer>
Suscribirse a:
Entradas (Atom)
linux ubuntu mint actualizar chrome
desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable
-
por consola y desde la raiz de tu proyecto php artisan --version
-
en nuestro proyecto creamos una carpeta llamada donde estaran todas nuestras clases, por ejemplo una llamada: MiApp adentro de esta irian b...
-
Integridad al nivel de la base de datos Oracle Oracle valida la integridad de la base de datos y presenta los siguientes mensajes de erro...