Laravel 5 - workbench migrations [duplicate] - laravel-5

I am having trouble to create package in Laravel 5 as workbench has been removed.
As in this thread (How create package in Laravel 5?), Goldorak suggest that we have to create our own package structure ourselves.
So, how can I create the workbench manually and get everything ready for package development?

Using the laravel Workbench package:
You can add the illuminate/workbench package in a Laravel 5 by adding to your composer.json:
"illuminate/workbench": "dev-master"
then add the WorkbenchServiceProvider into your config/app.php file:
'Illuminate\Workbench\WorkbenchServiceProvider'
Now you need to create the config/workbench.php file since it has been removed from Laravel 5:
<?php
return [
/*
|--------------------------------------------------------------------------
| Workbench Author Name
|--------------------------------------------------------------------------
|
| When you create new packages via the Artisan "workbench" command your
| name is needed to generate the composer.json file for your package.
| You may specify it now so it is used for all of your workbenches.
|
*/
'name' => '',
/*
|--------------------------------------------------------------------------
| Workbench Author E-Mail Address
|--------------------------------------------------------------------------
|
| Like the option above, your e-mail address is used when generating new
| workbench packages. The e-mail is placed in your composer.json file
| automatically after the package is created by the workbench tool.
|
*/
'email' => '',
];
Fill your information in this config file then you will be able to use the workbench command:
php artisan workbench vendor/name
Creating your own package structure
In this exemple we will create our package called awesome in a packages directory.
Here is the package structure:
packages/
vendor/
awesome/
src/
Awesome.php
composer.json
Vendor: your vendor name, typically this is your github username.
Awesome: the name of your package
src: Where you put the business logic
To generate a composer.json file you can use this command in the packages/vendor/awesome directory:
composer init
Now we create a Awesome.php class in the src directory with a simple method:
<?php namespace Vendor/Awesome;
class Awesome
{
public static function printAwesomeness()
{
echo 'Awesome';
}
}
After that we add the package to the laravel composer.json psr-4 autoloader:
"autoload": {
"psr-4": {
"App\\": "app/",
"Vendor\\Awesome\\": "packages/vendor/awesome/src"
}
},
and we dump the composer autoloader
composer dump-autoload
Now you can use your package everywhere in your laravel 5 project. If you need some laravel specific feature like service provider or view publishing, use them as described in the Laravel 5.0 documentation.

laravel 5 Standards with out workbench.
Set 1 : install laravel as usual.
Step 2 : Create package folder and service provider
In root directory create a folder call "packages" /"vendorName"/"packageName"/src" Eg: root/packages/jai/Contact/src
now navigate to src folder and create a service provider class: "ContactServiceprovider.php"
your service provider should extend ServiceProvider which has to implement register method.
Note:If you want you can have dd("testing"); in boot function and go to step 3 but you have copied the file you might want to create views , routes , config and controllers check link below for that
Step 3 : add package path in root composer.json in your root composer.json file "jai\Contact\": "packages/jai/Contact/src/" under psr-4
"psr-4": { "App\": "app/", "Jai\Contact\": "packages/jai/contact/src/", }
Step 4 : add service provider in app config.
in your root/conifg/app.php under providers add your package service provider to hook your package in.
'Jai\Contact\ContactServiceProvider',
Step 5 : run composer dump-autoload - make sure there are no errors.
all done - now you can access your package via url - "yourwebsite/contact"
Resource from here : https://github.com/jaiwalker/setup-laravel5-package

You could use package on this named packman. composer global require "hadefication/packman", just a simple package creator for Laravel.

Related

Laravel package class not found

I have installed laravel packages on staging server and packages working fine. But when i take pull on staging server, it is showing me error that package class not found.
Steps I have followed to resolve issue
I have check in vendor folder as well as in config/app.php, but I got class declaration and package folder is there.
After this when I update composer, my issue get resolved.
Is there any other file which should i look for class defination?
Perform a composer update, then composer dump-autoload.
If the above doesn't solve the problem, change the classmap in your composer.json file such that it contains the project-relative path to your php files:
"autoload-dev": {
"classmap": [
"tests/TestCase.php",
"database/seeds/UserTableSeeder.php" //include the file with its path here
]},
and soon after, perform a composer dump-autoload, and it should work now

Create own laravel package

I try to create own laravel package.
I created package folder in my project in root directory.
Than created simplexi/greetr/src folders in package.
I added to autoload "Simplexi\Greetr\": "package/simplexi/greetr/src" in composer.json in main project, and used command composer dump-autoload.
Than in src folder I created RiakServiceProvider, added this provider to config=>app.php to providers array.
Then in boot method I added next code:
$this->publishes([__DIR__ . '../config/myconf.php' => config_path() . '/']);
And executed next command:
php artisan vendor:publish --provider="\Simplexi\Greetr\RiakServiceProvider"
Than I got Publishing complete.
But file myconf.php didn't copy to app/config.
Also I checked file myconf.php in my package/simplexi/greetr/config folder and it exists.
Can anyone tell me what the problem might be?
publishes() expect two parameters. Try something like this:
$this->publishes([
__DIR__.'/../config/myconf.php' => config_path('myconf.php'),
], 'config');

how to create new module in Laravel

Is there any simple way to create new module in Laravel, if yes then please explain in detail.
Need to create new custom module in Laravel for users, product etc but didnt understand how to proceed with the same.
These packages will not help you if you don't understanding what exactly are you doing. I really recommend you to start with this tutorial, for example.
You should be right to go with
php artisan module:make <module_name>
You can also create multiple modules at once doing this:
php artisan module:make Users Products
this command will create all the resources you need like controller, seed class service provider and scaffold all the routes. If you dont want all this create new module with the following command
php artisan module:make Products --plain
After research found solution on GITHub :
https://github.com/jaiwalker/setup-laravel5-package
This might be better way to create a new package.
If anybody have better solution, then please share.
To install through Composer, by run the following command:
composer require nwidart/laravel-modules
The package will automatically register a service provider and alias.
Optionally, publish the package's configuration file by running:
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
By default the module classes are not loaded automatically. You can autoload your modules using psr-4 (composer.json). For example :
{
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
}
}
Creating a module is simple and straightforward. Run the following command to create a module.
php artisan module:make <module-name>
It is also possible to create multiple modules in one command.
php artisan module:make Blog User Auth
You can refer this open source project to create module https://asgardcms.com/ - A modular multilingual CMS built with Laravel 5.

Laravel : best place to create a composer package

I'm going to create my first laravel based composer package . also github for windows is installed . laravel is located in :
E:\xampp\htdocs\pnu
as i need to test my package with laravel during the development(check relational paths , error debugging) where is the best place to create package root folder ?
There is no default location for this. Lets say your packages is called HelloWorld, than you can put your package here:
E:\xampp\htdocs\pnu\packages\Alex\Helloworld
And then add this to your composer file (composer.json in root directory):
"autoload": {
"psr-4": {
"Alex\\Helloworld\\": "packages/Alex/Helloworld/src"
}
},
You can read more about this here https://laracasts.com/discuss/channels/tips/developing-your-packages-in-laravel-5.

laravel 4 package controller class not found

I have a workbench package named jumper. I have three controllers
-src
--controllers
-- dashboard
-- nide
-- users
I have already registered service provider for my package. There I can access two controller Auth and Nide where as I have not being able to access the Users class.
my routs are as follows :
// 1. dash package routes
Route::get('/dash', 'Jumper\Dash\Dashboard#index');
Route::controller('dash', 'Jumper\Dash\Dashboard');
// 2. auth/Users routes
Route::controller('users', 'Jumper\Dash\Users');
Route::get('/users', 'Jumper\Dash\Users#tests');
I have already run
-> artisan dump-autoload command
-> composer update
Problem is while accessing /users or running dump-autoload command it gives me
ReflectionException
Class Jumper\Dash\Users does not exist
Note :
I have already defined the same jumper/dash as name space same as for other controller
Can Suggestions ???
Regards

Resources