vweb: populate action method params with form values
							parent
							
								
									4d7bb95c2f
								
							
						
					
					
						commit
						da58ba0d5c
					
				| 
						 | 
				
			
			@ -8584,7 +8584,7 @@ fn (mut c Checker) verify_all_vweb_routes() {
 | 
			
		|||
						continue
 | 
			
		||||
					}
 | 
			
		||||
					if f.return_type == typ_vweb_result && f.receiver.typ == m.params[0].typ
 | 
			
		||||
						&& f.name == m.name {
 | 
			
		||||
						&& f.name == m.name && !f.attrs.contains('post') {
 | 
			
		||||
						c.change_current_file(f.source_file) // setup of file path for the warning
 | 
			
		||||
						c.warn('mismatched parameters count between vweb method `${sym_app.name}.$m.name` ($nargs) and route attribute $m.attrs ($nroute_attributes)',
 | 
			
		||||
							f.pos)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -100,6 +100,9 @@ fn (mut g Gen) comptime_call(node ast.ComptimeCall) {
 | 
			
		|||
		if m.params.len - 1 != node.args.len && !expand_strs {
 | 
			
		||||
			// do not generate anything if the argument lengths don't match
 | 
			
		||||
			g.writeln('/* skipping ${node.sym.name}.$m.name due to mismatched arguments list */')
 | 
			
		||||
			// g.writeln('println(_SLIT("skipping ${node.sym.name}.$m.name due to mismatched arguments list"));')
 | 
			
		||||
			// eprintln('info: skipping ${node.sym.name}.$m.name due to mismatched arguments list\n' +
 | 
			
		||||
			//'method.params: $m.params, args: $node.args\n\n')
 | 
			
		||||
			// verror('expected ${m.params.len-1} arguments to method ${node.sym.name}.$m.name, but got $node.args.len')
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -473,7 +473,16 @@ fn handle_conn<T>(mut conn net.TcpConn, mut app T, routes map[string]Route) {
 | 
			
		|||
				// should be called first.
 | 
			
		||||
				if !route.path.contains('/:') && url_words == route_words {
 | 
			
		||||
					// We found a match
 | 
			
		||||
					if req.method == .post {
 | 
			
		||||
						// Populate method args with form values
 | 
			
		||||
						mut args := []string{cap: method.args.len}
 | 
			
		||||
						for param in method.args {
 | 
			
		||||
							args << form[param.name]
 | 
			
		||||
						}
 | 
			
		||||
						app.$method(args)
 | 
			
		||||
					} else {
 | 
			
		||||
						app.$method()
 | 
			
		||||
					}
 | 
			
		||||
					return
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue