摘要:本文將使用框架開發(fā)一個全新的博客,開發(fā)設(shè)備為,使用環(huán)境,為。現(xiàn)在讓我們先來創(chuàng)建一個文件夾,并將文件放置到其中。完成之后,點(diǎn)擊右下角的按鈕。
本文將使用Laravel5.4框架開發(fā)一個全新的博客,開發(fā)設(shè)備為Mac,使用Homestead 環(huán)境,IDE 為 Phpstorm。一、安裝Laravel項目 1.安裝項目
> cd ~/Homestead && vagrant up > vagrant ssh > vagrant@homestead:~$ cd Code > vagrant@homestead:~/Code$ composer create-project laravel/laravel digtime // 或者指定版本 composer create-project --prefer-dist laravel/laravel digtime "5.5.*"2.homestead.yaml配置
? ~ atom ~/.homestead/Homestead.yaml
--- ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/Code to: /home/vagrant/Code sites: - map: digtime.app # <--- 這里,第四個項目 to: /home/vagrant/Code/digtime/public # <--- 這里 databases: - digtime variables: - key: APP_ENV value: local # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar # ports: # - send: 50000 # to: 5000 # - send: 7777 # to: 777 # protocol: udp3.重啟vagrant
修改完 Homestead.yaml 文件后,需要重新加載配置文件信息才能生效。
? ~ cd Homestead ? Homestead git:(7924ab4) vagrant reload --provision4.修改hosts配置文件
Hosts配置域名在mac的位置: /etc/hosts
192.168.10.10 digtime.app5.通過域名訪問
digtime.app
6.快速進(jìn)入項目cd ~/Homestead && vagrant up vagrant ssh cd ~/Code/digtime二、安裝項目需要的資源 1.npm安裝前端包
npm install2.artisan 生成表
執(zhí)行所有未執(zhí)行的遷移
php artisan migrate
回滾上一次的遷移
vagrant@homestead:~/Code/digtime$ php artisan migrate:rollback3. artisan 命令生成權(quán)限
php artisan make:auth4. 修改User位置
Laravel 為我們默認(rèn)創(chuàng)建的模型文件放置在 app 文件夾下,為了更符合 MVC 模式的開發(fā)流程,本博文統(tǒng)一使用 app/Models 文件夾來放置所有的模型文件。現(xiàn)在讓我們先來創(chuàng)建一個 app/Models 文件夾,并將 User.php 文件放置到其中。
$ mkdir app/Models $ mv app/User.php app/Models/User.php
在執(zhí)行完這一步的操作之后,我們還需要執(zhí)行下面這兩個操作:
1、修改 User.php 文件,更改 namespace 為我們新創(chuàng)建的文件夾路徑:
app/Models/User.php
2、全局更改 AppUser 為 AppModelsUser,在 Atom中使用快捷鍵 shift + cmd(ctrl) + f 來進(jìn)行全局搜索替換的操作。
完成之后,點(diǎn)擊右下角的 Replace All 按鈕。
三、github 托管項目git 初始化
vagrant@homestead:~/Code/digtime$ git init Initialized empty Git repository in /home/vagrant/Code/digtime/.git/ vagrant@homestead:~/Code/digtime$ git add -A > git commit -m "Initial commit" // 將項目推到github上 > git remote add origin git@github.com:corwien/digtime.git > git push -u origin master // 添加分支 > git checkout master > git checkout -b users四、webpack打包資源有關(guān)Laravel5.4 的 webpack使用,請看我的這篇博文:
Laravel5.4新特性-Laravel-mix的使用Mix 是位于 Webpack 頂層的配置層,所以要運(yùn)行 Mix 任務(wù)你只需要在運(yùn)行包含在默認(rèn) package.json 文件中的其中某個 NPM 腳本即可:
// 1.安裝package.json 包 npm install // 2.運(yùn)行所有 Mix 任務(wù)... npm run dev // 運(yùn)行所有 Mix 任務(wù)并減少輸出... // npm run production // 3.監(jiān)控前端資源改變 npm run watch 監(jiān)控前端資源改變五、密碼重置郵件發(fā)送對密碼重置郵件發(fā)送進(jìn)行重構(gòu),使用sendCloud進(jìn)行發(fā)送。
在 AppModelsUser.php 用戶 Model 方法中重寫sendPasswordResetNotification($token)發(fā)送郵件的方法:/** * 重寫重置密碼的郵件發(fā)送通知,覆蓋zhihu_app_reset_password底層的發(fā)送方法 * 對這個類進(jìn)行重寫: IlluminateContractsAuthPasswordBroker * $user->sendPasswordResetNotification( * $this->tokens->create($user) * ); * 類文件:PasswordsPasswordBroker * @param $token */ public function sendPasswordResetNotification($token) { // 重構(gòu)發(fā)送郵件 (new UserMailer())->resetPassword($token, $this->email); }IlluminateAuthPasswordsPasswordBroker.php
/** * Send a password reset link to a user. * * @param array $credentials * @return string */ public function sendResetLink(array $credentials) { // First we will check to see if we found a user at the given credentials and // if we did not we will redirect back to this current URI with a piece of // "flash" data in the session to indicate to the developers the errors. // 根據(jù)傳遞過來的email獲取用戶信息 $user = $this->getUser($credentials); if (is_null($user)) { return static::INVALID_USER; } // Once we have the reset token, we are ready to send the message out to this // user with a link to reset their password. We will then redirect back to // the current URI having nothing set in the session to indicate errors. $user->sendPasswordResetNotification( $this->tokens->create($user) ); return static::RESET_LINK_SENT; }IlluminateAuthPasswordsCanResetPassword.php
/** * Send the password reset notification. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token)); }最底層的發(fā)送郵件方法:
IlluminateAuthNotificationsResetPassword.php/** * Build the mail representation of the notification. * * @param mixed $notifiable * @return IlluminateNotificationsMessagesMailMessage */ public function toMail($notifiable) { return (new MailMessage) ->line("You are receiving this email because we received a password reset request for your account.") ->action("Reset Password", route("password.reset", $this->token)) ->line("If you did not request a password reset, no further action is required."); }六、自定義函數(shù)方法在app目錄下,創(chuàng)建共用的函數(shù)文件Support/helpers.php
創(chuàng)建方法文件之后,需要在composer.json文件中自動加載:
"autoload": { "files":[ "app/Support/helpers.php" ], },然后執(zhí)行 composer 重新加載方法:
> composer dump-autoload七、Markdown編輯器http://editor.integ.me/ segmentfault 家的,解析庫也有:https://segmentfault.com/a/11...
https://laravel-china.org/top...
1.Markdown編輯器Markdown編輯器:https://simplemde.com/
這個編輯器看起來挺不錯,很簡潔,我們可以集成在我們的項目中。
1.1 npm 安裝npm install simplemde --save1.2 引用在resources/assets/js/bootsrap.js 中引入剛下載的資源包:
// 引入markdown編輯器 window.simplemde = require("simplemde");1.3 編譯靜態(tài)資源使用命令編譯剛引入的資源,這樣才可以編輯在 public/app.js 中:
npm run devOK,這樣就引入到前端資源文件中了
Demo:
demo.html1.4 在Laravel-admin中集成Simplemde編輯器SimpleMDE Dome SimpleMDE Dome
我們可以給下邊的 laravel-admin后臺 集成該 Markdown 的編輯器。
Simplemde 是一個優(yōu)秀簡潔的Markdown編輯器,如果 laravel-admin 自帶的基于 ckeditor 的編輯器組件使用上有問題,可以通過下面的步驟可以集成它,并覆蓋掉ckeditor:
1.4.1 先下載前端庫文件Simplemde先下載前端庫文件Simplemde, 解壓到目錄 public/packages/admin/simplemde
1.4.2 新建組件類然后新建組件類app/Admin/Extensions/Simplemde.php
script = <<1.4.3 注冊 然后注冊進(jìn)laravel-admin,在 app/Admin/bootstrap.php 中添加以下代碼:
* * Bootstraper for Admin. * * Here you can remove builtin form field: * EncoreAdminForm::forget(["map", "editor"]); * * Or extend custom form field: * EncoreAdminForm::extend("php", PHPEditor::class); * * Or require js and css assets: * Admin::css("/packages/prettydocs/css/styles.css"); * Admin::js("/packages/prettydocs/js/main.js"); * */ // EncoreAdminForm::forget(["map", "editor"]); use AppAdminExtensionsSimplemde; use EncoreAdminForm; Form::extend("editor", Simplemde::class);1.4.4 使用// 這樣就可以使用我們上邊自定義的Simplemde Markdown編輯器了 $form->editor("content");完整文件
/** * Make a form builder. * * @return Form */ protected function form() { return Admin::form(Article::class, function (Form $form) { $form->display("id", "ID"); $form->text("title", "標(biāo)題")->rules("required|min:3"); $form->text("subtitle", "副標(biāo)題"); $form->text("user_id", "作者ID")->default(4); $form->text("slug", "Slug")->default("My-blog-4"); $form->text("category_id", "分類ID")->default(1); $form->text("order", "排序")->default(1); $form->radio("is_excellent", "是否精華")->options(["F" => "否", "T" => "是"])->default("T"); // 圖片路徑為upload/images/ $form->image("page_image", "上傳文章背景圖")->move("images", function($file){ // 自定義文件名,時間戳+五個隨機(jī)字符串+用戶ID $file_name = date("Ymd") . str_random(6); return $file_name . "." . $file->guessExtension(); }); $form->datetime("published_at", "發(fā)布作品時間")->format("YYYY-MM-DD HH:mm:ss"); $form->display("created_at", trans("admin::lang.created_at")); $form->display("updated_at", trans("admin::lang.updated_at")); // 自定義的編輯器 $form->editor("content")->rules("required|min:3"); }); }2.Markdown解析類segmentfault 的Markdown解析類:SegmentFault/HyperDown
Laravel 引入第三方類文件,我們在app目錄下新建一個路徑,app/Markdown,并將下載的類文件 Parser.php 放在該目錄下,然后再新建一個文件,引用該類,這樣做的好處就是可以完全分離核心類文件,如同合約contacts 一樣,如果以后我們的解析類變了,我們只需對核心類做改變,而其他應(yīng)用的方法不需要再修改。
markdown.php 引用 parse.php 類:
parser = $parser; } public function markdown($text) { $html = $this->parser->makeHtml($text); return $html; } }在引用第三方類后,需要執(zhí)行下面命令進(jìn)行自動加載:
composer dump-autoload使用方法:
markdown = $markdown; } // 解析Markdown 內(nèi)容 $this->markdown->markdown($article->content);3.Markdown語法高亮找了一個非常簡潔的 Markdown 樣式文件,我放在了 Gist 上,有需要的朋友可以看看:
Gist: corwien/Markdown.scss將該文件下載放在Laravel中 resources/assets/css/vendor/markdown.scss,然后在 resources/sass/app.scss 中引入:
// Markdown // 代碼高亮 @import "./../css/vendor/highlight.min"; // 編輯器樣式文件 @import "./../css/vendor/simplemde.min"; // 引入markdown樣式文件 @import "./../css/vendor/markdown.scss";然后編譯前端資源文件:
npm run dev這樣,該markdwon樣式文件就編譯到前端資源文件中了。
我們可以在前端的內(nèi)容字段處引入 class="markdown" 樣式,然后看看渲染效果:
article.blade.php{!! $article->content !!}代碼塊是不是很簡潔清爽許多呢?
八、開源的管理后臺我們可以在項目中引入開源的管理后臺,這樣可以大大的提高我們的項目開發(fā)速度,這里推薦兩個非常強(qiáng)大的開源管理后臺。
1.Laravel-Administrator【擴(kuò)展推薦】管理員后臺快速生成工具 Administrator "增強(qiáng)版" 分享
項目GitHub地址:summerblue/administrator
該后臺非常好用,由Laravel-China 團(tuán)隊維護(hù)開發(fā),十分鐘就可以搭建起一個簡單的管理后臺:
2.laravel-admin該管理后臺非常強(qiáng)大,使用Laravel AdminLTE開發(fā),可以快速實現(xiàn)增刪改查功能及角色管理。
項目:GitHub地址: z-song/laravel-admin
Demo: 后臺用戶名:admin 密碼:admin
由于該前端資源有引入google地圖,所以,前端加載會非常慢,這里我們對源碼進(jìn)行一下修改:
換掉谷歌的地圖,加載時間過長:
/vendor/encore/laravel-admin/src/Form/Field/Map.php/** * Get assets required by this field. * * @return array */ public static function getAssets() { // 本項目配置環(huán)境使用的語言包是zh-CN,"resources/lang/zh-CN/", 所以這里對zh_CN做出修改【20170501】 if (config("app.locale") == "zh-CN") { $js = "http://map.qq.com/api/js?v=2.exp"; } else { $js = "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=".env("GOOGLE_API_KEY"); } return compact("js"); }九、Markdown側(cè)邊欄生成為了使我們的文章詳情頁更利于瀏覽,像SF一樣,有一個側(cè)邊導(dǎo)航欄,這里我們使用一段js代碼就可以輕松的實現(xiàn)該功能。
js代碼:
DemoGist:corwien/markdown-side-menu-demo.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/30571.html
摘要:建立并切換到本地分支沐沐沐也可以直接用刪除本地倉庫里的所有文件除了的文件夾,然后推送沐沐沐這個時候,遠(yuǎn)程倉庫的分支便和本地倉庫的分支一樣都是空白的,這樣就可以隨心所欲的推送了。 背景 最近在用laravel開發(fā)微信小程序的接口,因為服務(wù)器PHP版本的問題,分別用了laravel 5.6(php 7.1,開發(fā)環(huán)境) 和 laravel 5.4 (php 5.6,服務(wù)器環(huán)境),開發(fā)完成后...
摘要:前邊已經(jīng)學(xué)會在本地用進(jìn)行開發(fā)了,現(xiàn)在就讓我們將本地開發(fā)的項目部署到阿里云服務(wù)器,來次實戰(zhàn)操作,阿里云部署環(huán)境阿里,,使用服務(wù)器,登錄。 前邊已經(jīng)學(xué)會在本地用Homestead進(jìn)行開發(fā)了,現(xiàn)在就讓我們將本地開發(fā)的項目部署到阿里云服務(wù)器,來次實戰(zhàn)操作,阿里云部署環(huán)境:阿里ECS,Ubuntu,使用Nginx服務(wù)器,SSH登錄。 一、服務(wù)器配置 如果你的服務(wù)器是剛申請的,則必須做一些基礎(chǔ)的配...
摘要:查找保存下載用搭建自己的緩存?zhèn)}庫權(quán)限管理的好選擇基于封裝的后臺管理系統(tǒng),支持手機(jī)和端訪問支付寶風(fēng)格的驗證器后臺系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動記錄用戶行為擴(kuò)展一個項目管理系統(tǒng)根據(jù)生成對應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:最簡化權(quán)限管理系統(tǒng),基于開發(fā)。基于開發(fā),唯一優(yōu)化的是用權(quán)限和路由別名綁定,這樣代碼寫好之后就可以直接使用。如果是超級管理員,即使沒有這個權(quán)限會自動賦予權(quán)限給超級管理員角色。默認(rèn)管理員賬號密碼。然后正常執(zhí)行命令其他命令即可。 Any 最簡化權(quán)限管理系統(tǒng),基于 Laravel5.4 開發(fā)。由于 Laravel5.5 發(fā)布推遲,只好先寫個 Laravel5.4版本的,后面再升級上去。演示地址...
摘要:像操作系統(tǒng)一樣,你可以通過安裝軟件,成為適用于你的電腦。先進(jìn)的技術(shù)方案,使得你無需擔(dān)心后期功能拓展與迭代問題,大大降低了維護(hù)成本。對于一個超過三年生命周期的項目來說,最適合不過。總之,是新的技術(shù)方向標(biāo),能讓每個藝術(shù)家像構(gòu)建工程一樣構(gòu)建程序。 這是我們團(tuán)隊的一個非盈利項目,以Apache2.0協(xié)議開源...不限制商用 Notadd是什么 Notadd 是基于Laravel 和 Vue 的...
閱讀 2082·2021-11-24 09:39
閱讀 1536·2021-10-11 10:59
閱讀 2489·2021-09-24 10:28
閱讀 3368·2021-09-08 09:45
閱讀 1263·2021-09-07 10:06
閱讀 1657·2019-08-30 15:53
閱讀 2056·2019-08-30 15:53
閱讀 1411·2019-08-30 15:53