mql4

3分钟短文 | Laravel 中间件传递数据到控制器

雨燕双飞 提交于 2020-11-18 08:36:35
引言 Laravel分层设计中,一般在路由阶段对请求进行初步的过滤筛选, 对不合格的或者非法的请求,直接可以中断请求,返回错误结果。 一般我们也是这么做的,但是你想过没有,中间件如何传递数据到下游?本文就来说一说。 学习时间 比如有一个需求,根据用户身份,判断其是否可以访问某个页面。先注册一个路由地址,在 route.php 文件内添加如下参数: Route::get('pages/{id}', [ 'as' => 'pages', 'middleware' => 'pageUser', 'uses' => 'PagesController@view' ]); 接着是实现 PageUserMiddleware.php 中间件逻辑,代码如下: public function handle($request, Closure $next) { $pageId = $request->route('id'); $page = Page::with('users')->where('id', $pageId)->first(); if(!$page->users()->wherePivot('user_id', Auth::user()->id)->exists()) { return redirect()->route('redirectRoute'); } return $next(

3分钟短文:Laravel控制器用法光速入门

巧了我就是萌 提交于 2020-11-17 07:16:32
引言 上一章我们介绍了laravel路由注册中的“花拳绣腿”,样样都是那么优雅而实用。路由传递过来的参数,在经过中间件验证和导向之后,应该去控制器接受处理了。 本文用最简单的示例,让你明白laravel中控制器是干什么的,以及怎么用。 代码时间 在开始介绍之前,我们先看一下MVC设计模式的一个概要图: Model就是模型,是数据库交互部分;View就是视图,是渲染数据的页面。我们本期介绍的就是中间的连接部分—— controller 控制器。 首先使用命令行脚手架创建一个控制器文件: php artisan make : controller TasksController 默认的控制器文件放置在 app/Http/Controllers 目录下。我们看生成的文件默认代码: namespace App \ Http \ Controllers ; use Illuminate \ Http \ Request ; use App \ Http \ Requests ; class TasksController extends Controller { } 仅仅是继承了框架的 Controller 类。没有什么可写的,我们就写个 hello world 练练手吧: public function home ( ) { return 'Hello, World!' ; } 我们声明了

3分钟短文:Laravel模板,也支持一般编程语言的语法结构了

北城以北 提交于 2020-11-15 20:21:24
引言 从控制器内组装好的数据渲染到视图文件,上一章我们演示了简单的单变量数值访问。 laravel的模板系统,还提供了很多常用的编程语言的语法结构,其实是PHP的变体, 可以让编程人员更好地掌控HTML输出。 本期就来说说模板内的程序结构的高阶用法。 转义 or 不转义 首先是单变量的值,我们在控制器内有可能并没有为该变量赋值,或者并未声明和传递该变量, 在模板内直接引用,会抛出 变量未定义 的异常,造成无法渲染。 laravel给了一个简洁的判空的方式,就是 or 语法,很直观,代码用起来如下: Welcome , {{ $name or 'Laravel Member' }} ! 我们上一章介绍过,使用双大括号会在模板解析的时候,生成下面的PHP代码: <? php echo $variable ; ?> 这对常规变量无害,可是对于非法的操作,比如是用户输入的内容,直接展示的话,有可能造成文件和数据库等等的风险, 所以对变量要做一次转义,将其内容原封不动地用字符串的方式展现出来,这样做其实非常有必要。 对变量结果进行转义,使用如下的语法: { !! 'My list <script>alert("spam spam spam!")</script>' !! } 大家看到了,如果上面的内容直接输出到HTML,就会触发js的注入。可是,使用转义之后,就是原文输出,不会被浏览器解析。

3分钟短文:Laravel查询构造器,告别手写SQL的艰苦岁月

£可爱£侵袭症+ 提交于 2020-10-30 19:38:15
引言 鉴于上一章标题引起一些开发同学的巨大兴趣,本文我们接着此种行文方式继续我们的“Laravel宇宙”系列文章。 我们在前一些章节,相继使用迁移创建了数据库结构,使用seeder为数据库填充了假数据,现在我们要对数据进行操作了。 哪些操作?增删改查! 本文先不说模型,说说直接的查询构造器,说说怎么把数据筛选出来,这用的应该是最多的了。 代码时间 说起柔顺,你想起来什么?是撸代码,没错,就是它。 大家看看下面这个代码写法柔顺不柔顺: $users = DB :: select ( [ 'table' = > 'users' , 'where' = > [ 'type' = > 'donor' ] ] ) ; 我们说撸代码,是有一个从前到后,丝滑连贯的感受的,上面这段不柔顺,它在各个参数位置传入了各种结构的数据, 不仅看上去乱,写上去乱,连代码自己都觉得乱。 下面是laravel里用的最多的写法: $users = DB :: table ( 'users' ) - > where ( 'type' , 'donor' ) - > get ( ) ; 这些是不是顺多了,一气呵成,要的就是这个感觉。 为了演示查询构造器的功能用法,我们直接使用 DB 门面创建 QueryBuilder 对象。比如执行原生的语句: DB :: statement ( 'drop table users'

3分钟短文 | Laravel复杂SQL超多WHERE子句,本地作用域你没用过

别等时光非礼了梦想. 提交于 2020-08-19 23:01:46
引言 使用框架就是为了方便把注意力集中在逻辑上,而不用关心与数据库操作的方方面面。Laravel提供的 eloquent orm 使用面向对象的方式封装了PDO数据库操作,使用起来非常方便,对于复杂的SQL操作也游刃有余。 今天说一说,复杂的超多的WHERE子句,怎么写起来较为优雅。 学习时间 比如对于业务逻辑中,User模型在筛选查询的时候有非常多的限制条件,类似下面这样的: 这一堆令人头皮发麻的where,还不算变态。更厉害的是加上多表联合查询,那就真的是 sql 的噩梦了。然而对于laravel而言,这些全过程都可以拼装,你只需要关注筛选和操作,剩下的组装sql的过程,laravel都帮你做好了。 首先,你完全不必把每个条件都使用where链式调用,可以把查询条件放在一个 array 数组内,整体传入where子句。 这样把拼装where子句的工作,提前到查询数组的操作上,就更加灵活了。 比如说,and 查询条件的连接问题不大,最头疼的是加上 or 查询,就要顾着个顾那个,到处受限制。一般我们这样处理。比如声明 and 连接的查询条件数组: $matchThese = ['field' => 'value', 'another_field' => 'another_value', ...]; 使用 or 操作的另外一个查询条件数组: $orThose = ['yet

MQL4 - Set Trailing Step According to Order Swap and Minimum Stop allowed

帅比萌擦擦* 提交于 2020-06-17 16:17:23
问题 I am using a swap strategy with two account with different brokers (hedged accounts). I have the code that sync between the two account (via two brokers). When i close a BUY order with broker A, my EA send Close message and the SELL order on broker B gets closed. i get profit from (swap-commission) on broker B. What i need, instead of closing the order on broker B do the following: Get the total swap of the SELL order. Set the Trailing stop loss by the (swap-commission) value, e.g if the

mql4 save object to array then to file

試著忘記壹切 提交于 2020-06-17 15:53:31
问题 I have an arrayobject class and I am saving the information when a new record is created or deleted. And then loading the data back when the ea initialises I an unsure how to create a multi array from the object to save/load file main.mql4 #include <CTrade.mqh> CArrayObj* listOfTrades=NULL; int OnInit() { //initialise listOfTrades and load saved data from file listOfTrades = new CArrayObj; } void OnDeinit(const int reason) { if(CheckPointer(listOfTrades)==POINTER_DYNAMIC) delete(listOfTrades)

mql4 save object to array then to file

China☆狼群 提交于 2020-06-17 15:52:18
问题 I have an arrayobject class and I am saving the information when a new record is created or deleted. And then loading the data back when the ea initialises I an unsure how to create a multi array from the object to save/load file main.mql4 #include <CTrade.mqh> CArrayObj* listOfTrades=NULL; int OnInit() { //initialise listOfTrades and load saved data from file listOfTrades = new CArrayObj; } void OnDeinit(const int reason) { if(CheckPointer(listOfTrades)==POINTER_DYNAMIC) delete(listOfTrades)

How can I recognise programmatically when an up/down arrow is drawn on a chart when arrow objects are hidden?

浪子不回头ぞ 提交于 2020-05-28 04:25:51
问题 I know how to draw an object arrow on the chart, which I usually do like this: ObjectCreate(0,"prevHigh",OBJ_ARROW_DOWN,0,Time[0],High[highestCandle]); ObjectSetInteger(0, "prevHigh", OBJPROP_COLOR, clrRed); Now I have an indicator which (I didn't code myself and is a .ex4 file which) draws up/down arrows on the chart as seen in the image (https://imgur.com/a/8yG0suw). How can I when for example a Magenta down arrow has been drawn and the candle (index) at which it is drawn? Please note that

Processing json string in mql4

跟風遠走 提交于 2020-04-17 18:46:11
问题 I have received the following string: {"records":[{"id":"rec4haaOncoQniu8U","fields":{"orders1":5},"createdTime":"2020-02-08T09:08:22.000Z"}]} I am not understanding how I can process and separate the values of the json in mql4 using the "JAson.mqh " library, located here: https://www.mql5.com/en/code/13663 I need the values of "orders" located under "fields" , value = 5 . the only "KEYS" that changes are the keys within the "fields" values. i would like to be able to get the values with